¿proporcionar contraseña sudo sobre ssh utilizando sustitución de proceso bash?
mi pregunta puede ser visto como una extensión de cómo hacer diff a través de ssh? con un pequeño giro.medio ambientemacos sierra (10.12.3) openssh 7.3situación de ejemploestoy tratando de imprimir un diff entre los dos archivos, uno de ellos se encuentra en un host remoto y exige sudo para la lectura.si este archivo remoto era legible por mi usuario remoto (o si me podría ejecutar el comando con sudo flag nopasswd) yo simplemente ejecutar:diff localfile
puede forzar la sudo para tomar la contraseña desde stdin mediante la -s opción, según este post de superusuario. así la sintaxis de diff localfile
<p>esto funcionará:</p><pre><code>echo "$(whoami)" [ "$uid" -eq 0 ] || exec sudo "$0" "$@" </code></pre><p>ejemplo:</p><pre><code>./test.sh blade [sudo] password for blade: root </code></pre> en microsoft sql server management studio, usted puede hacer clic derecho en la base de datos que desea copia de seguridad y haga clic en tareas -> generar secuencias de comandos. esto abre un asistente en el que se pueden establecer las siguientes con el fin de realizar una decente copia de seguridad de su base de datos, incluso en un servidor remoto: seleccione la base de datos que desea copia de seguridad y pasa al siguiente, en las opciones que se le presenta: en el año 2010: por debajo de la mesa/opciones de visualización, cambiar el guión de datos' y 'script índices de' true y pasa al siguiente, en 2012: por debajo de 'general', 'cambiar' tipos de datos de la secuencia de comandos' de 'esquema' sólo 'el esquema y los datos en los próximos cuatro de windows, dale a 'seleccionar todo' y luego siguiente, elegir la secuencia de comandos a una nueva ventana de consulta una vez que se hace su cosa, vas a tener un script de copia de seguridad está listo en frente de usted. crear un nuevo local (o remoto) de la base de datos, y el cambio de la primera 'uso' de la declaración en la secuencia de comandos para utilizar la nueva base de datos. guardar la secuencia de comandos en un lugar seguro, y seguir adelante y ejecutar en contra de su nueva base de datos vacía. esto debería crear una (casi) duplicar la base de datos local puede, a continuación, copia de seguridad, ya que te gusta. si usted tiene pleno acceso a la base de datos remota, usted puede elegir a 'verificación de la secuencia de comandos de todos los objetos en el asistente de la primera ventana y, a continuación, cambiar el guión de la base de datos de' opción en true en la siguiente ventana. pero tenga cuidado, usted necesitará realizar una búsqueda completa y reemplazar el nombre de base de datos en la secuencia de comandos a una nueva base de datos, que en este caso usted no tendrá que crear antes de ejecutar la secuencia de comandos. esto debería crear más precisa duplicado, pero es que a veces no están disponibles debido a restricciones de permisos. <p>en sus archivos de perfil de shell de inicio de sesión, puede configurar algunas cosas que usará durante su sesión, y que solo deben hacerse una vez. algunas ideas:</p><ul> <li>cree un archivo temporal que contenga la dirección ip desde la que se conectó, luego puede incluirlo en algunos scripts que configuran las reglas del firewall.</li> <li>ejecute ssh-agent, solicite sus claves ssh y almacene las variables de entorno del agente ssh en un archivo.</li> <li>si esa es una máquina limitada, y sus compañeros de trabajo desean estar al tanto de los inicios de sesión de los demás, escriban (1) mensajes informándoles de su inicio de sesión.</li> </ul><p>en los archivos de shell sin inicio de sesión (<code>.bashrc</code>) debes configurar tu shell:</p><ul> <li>aviso de lujo</li> <li>establecer alias</li> <li>establecer opciones de historial</li> <li>definir funciones de shell personalizadas</li> <li>exportar variables de entorno (tal vez pager, editor si la configuración de todo el sistema apesta)</li> <li>cargar variables de agente ssh guardadas en <code>.bash\_profile</code></li> </ul><p>por lo general, incluirías <code>.bashrc</code> de <code>.bash\_profile</code> con lo siguiente. luego, iniciar sesión shell obtiene todas sus personalizaciones y <code>.bash\_profile</code> el archivo no tiene que duplicar cosas que ya están en <code>.bashrc</code>.</p><pre><code>[[ -f ~/.bashrc ]] &amp;&amp; . ~/.bashrc </code></pre> <p>ya ha habido bastante actividad sobre el tema en otros sitios de stack exchange. mi experiencia de cambiar de bash a zsh, hasta donde puedo recordar (fue hace años²), es que no me perdí nada. gané mucho; esto es lo que creo que son las características simples específicas de zsh que más uso:</p><ul> <li> <p><sub>la característica de zsh que más extraño cuando uso ocasionalmente bash es autocd: en zsh, ejecutar un directorio significa cambiar a él, siempre que active la opción <code>autocd</code>.</sub></p> </li> <li> <p>otra característica muy útil es el globbing elegante. los <strike>jeroglíficos</strike>los caracteres son un poco difíciles de recordar pero extremadamente convenientes (como en, a menudo es más rápido buscarlos que escribir el comando <code>find</code> equivalente). algunos de los ejemplos más simples:<br> <code>foo*~*.bak</code> = todas las coincidencias para <code>foo*</code> excepto las que coinciden <code>*.bak</code><br> <code>foo*(.)</code> = solo archivos regulares que coinciden <code>foo*</code><br> <code>foo*(/)</code> = solo directorios que coinciden <code>foo*</code><br> <code>foo*(-@)</code> = solo enlaces simbólicos colgantes que coinciden <code>foo*</code><br> <code>foo*(om[1,10])</code> = los 10 archivos más recientes que coinciden <code>foo*</code><br> <code>foo*(lm+1)</code> = solo archivos de tamaño&gt; 1 mb<br> <sub><code>dir/**/foo*</code> = <code>foo*</code> en el directorio <code>dir</code> y todos sus subdirectorios, recursivamente rec</sub></p> </li> <li> <p>para cambios de nombre sofisticados, el <code>zmv</code> incorporado puede ser útil. por ejemplo, para copiar cada <code><em>file</em></code> a <code><em>file</em>.bak</code>: <code>zmv -c '(*)(#q.)' '$1.bak'</code></p> </li> <li> <p>tanto bash como zsh tienen un sistema de finalización decente que debe activarse explícitamente (<code>. /etc/bash\_completion</code> o <code>autoload -u compinit; compinit</code>). zsh's es mucho más configurable y generalmente más elegante.</p> </li> </ul><p>si ejecuta zsh sin un <code>.zshrc</code>, se inicia un menú interactivo que le permite elegir las opciones de configuración. (algunas distribuciones pueden desactivar esto; en ese caso, ejecute <code>autoload zsh-newuser-install; zsh-newuser-install</code>). recomiendo habilitar las opciones de historial recomendadas, activar la finalización ("estilo nuevo") y activar las "opciones de shell comunes" excepto <code>beep</code>. más tarde, configure más opciones a medida que las descubra.</p><p>²<sub>en ese momento, la finalización programable era la característica asesina de zsh, pero bash la adquirió poco después.</sub><br> ⁴<sub>las características que bash adquirió solo en la versión 4 (por lo que todavía no están disponibles en muchos sistemas) son de tipo más pequeño.</sub></p> Bueno amigos es muy simple fijate que tu Sd (no la micro) al costado izquierdo tiene una perilla donde de un lado dice lock.. correlo para el lado contrario... <p>parece que el comando <code>tee</code> hará lo que quieras.</p><p>la clave es usar</p><pre><code>&gt;( ) </code></pre><p>para <a href="http://tldp.org/ldp/abs/html/process-sub.html">sustitución de proceso</a> . con <code>tee</code>, use el siguiente patrón:</p><pre><code>tee &gt;(proc1) &gt;(proc2) &gt;(proc3) | proc4 </code></pre><p>entonces, si desea utilizar la salida de <code>ls</code> como entrada a dos programas <code>grep</code> diferentes, guarde la salida de cada <code>grep</code> en archivos diferentes y canalice todos los resultados a través de <code>less</code>, prueba:</p><pre><code>ls -a | tee &gt;(grep ^[.] &gt; hidden-files) &gt;(grep -v ^[.] &gt; normal-files) | less </code></pre><p>los resultados de la <code>ls -a</code> se "canalizará" en ambos <code>grep</code>s. el archivo <code>hidden-files</code> tendrá el contenido de la salida del primer <code>grep</code>, y <code>normal-files</code> tendrá los resultados del segundo <code>grep</code>. <del>todos los archivos se mostrarán en el localizador <code>less</code>.</del> <strong> [~ # ~] editar [~ # ~] </strong>: lo que ves en <code>less</code> es el <strong> la misma salida exacta </strong> de <code>ls -a</code>, no el resultado de <code>grep</code>s. si desea modificar la salida de <code>ls -a</code> a <code>less</code>, (por ejemplo, cambiando el orden para que los archivos normales se enumeren antes de los ocultos) y luego intente esto:</p><pre><code>ls -a | tee &gt;(grep ^[.]) &gt;(grep -v ^[.]) &gt;/dev/null | less </code></pre><p>sin <code>&gt;/dev/null</code>, la salida de <code>grep</code>s se agregaría a la salida de <code>ls -a</code> en lugar de reemplazarlo.</p><p> <a href="http://linux.byexamples.com/archives/144/redirect-output-to-multiple-processes/">fuente</a> </p> Cuando instalas un SO creas un usuario local y al convertirlo en un DC ese administrador local pasa a ser administrador del dominio, por lo que si inicias en modo seguro debería permitirte entrar con ese usuario.  
Hay una aplicación llamada Password Renew (incluida en el MiniPE v2k6) que sirve para restaurar la password de un usuario local o para crearte un usuario con permisos de administración, esta segunda opción será la que mejor te convenga.  
Con 2008 no la he probado, pero con 2000, XP y 2003 si funciona, por lo que es más que probable que con 2008 también te funcione.  
Antes de nada, intenta entrar con ese usuario en modo seguro CON funciones de red, a ver si así te deja.  
Un saludo y coméntanos que tal te va! Te lo cuento por encima, ya que lo mejor que puedes hacer es buscar en google, como funciona el sistema de archivos. Mira, el sistema de archivos en unix es diferente. Los archivos y carpetas las crea un usuario que este puede dar permisos a otros usuarios o no. Una vez entiendas que hay root(master), usuarios y grupos para dar permiso, veras que si creas un usuario nuevo se te creara una carpeta nueva en el sistema de ficheros. Esta carpeta esta en /home/(usuario). Es aquí dentro donde el usuario puede dejar sus archivos. Por cada usuario que crees, se creara una carpeta con su nombre i cada uno podrá hacer lo que quiera en su carpeta /home/(usuarios), pero no, en la carpeta de otro usuario, ya que no tendrá permiso.   
En definitiva dentro de /home/(tuusuario) es donde puedes guardar tus archivos.   
Pero sigo recomendándote que te leas el formato de sistema de archivos de unix, lo entenderás mucho mejor como funciona todo, y no es muy largo ni pesado.  
¿Alguna duda más...? :-D Los comandos ping se pueden implementar de dos formas. Una con ICMP, mira aquí:  
http://www.redes.upv.es/~mperez/rc2/transpa/tema4\_archivos/frame.htm  
La otra con TCP o UDP, pero debe existir un servidor de ping al otro lado. En la URL que te he dado hay unas transparencias sobre ICMP, cabecera, ping y más.  
En http://www.redes.upv.es/~mperez/rc2 hay información mas general. Publico seria MUY peligroso. podes perfectamente usar el HFS si es lo que me imagino www.rejetto.com/hfs/