Estoy usando documentos aquí en un script bash para automatizar la instalación y configuración donde se requiere una contraseña muchas veces. Ingreso la contraseña una vez y la secuencia de comandos la pasa a los diversos comandos. En la mayoría de los casos, el enfoque de documento aquí maneja esta multa. Sin embargo, en un caso me sale este error:
Enter VNC password: stty: standard input: Inappropriate ioctl for device
Verify password:
stty: standard input: Inappropriate ioctl for device
Tenga en cuenta que este mensaje de error es de x11vnc -storepassword
(no de sudo
).
Mi problema está relacionado x11vnc -storepasswd
y aquí está mi código:
sudo x11vnc -storepasswd ~/.vnc/passwd << ENDDOC
password
password
y
ENDDOC
Eso obviamente (del error) no funciona. Agradecería un ejemplo práctico de cómo implementar sudo x11vnc -storepasswd ~/.vnc/passwd
en un script.
En caso de que ayude, las indicaciones se verán así:
Ingrese la contraseña de VNC:
Verifique la contraseña: ¿
Escriba la contraseña en /home/user/.vnc/passwd? [y] / nn
¿Será el uso expect
una mejor solución? Si es así, ¿cómo lo usaría en este caso? (Nunca lo he usado expect
antes, pero he visto muchos ejemplos desde que publiqué esta pregunta y no puedo expect
trabajar por mi cuenta).
fuente
sudo
, provienex11vnc -storepassword
. He estado probando variosexpect
enfoques y parece que no puedo hacerlo bien. Un ejemplo de usarexpect
para ingresar una contraseña parax11vnc -storepassword
sería muy apreciado. Actualizaré mi pregunta para evitar más confusión.Enter VNC password: usage: send [args] string
en la líneaexpect "password:" {send "swordfish" "\r"}
. No estoy seguro de cómo solucionar eso. Esperar parece ser una herramienta muy exigente porque he estado engañando con este problema en particular durante horas sin resultados de trabajo todavía.send "swordfish" "\r"
y fue resuelto porsend "swordfish\r"
. Sin embargo, la solución aún no funciona. No se escribe ninguna contraseña en ~ / .vnc / passwd. Todavía no tengo idea de por qué. Como dije, he estado viendo este resultado a pesar de intentar todo lo que puedo pensar hasta ahora.expect
solución funcionan cuando se ingresan manualmente. No funcionan en esteexpect
script ni en ninguna variación que haya probado hasta ahora.Otra opción para evitar esos mensajes de advertencia es ejecutar
x11vnc
en un pseudo-terminal creado por un comando UNIX (consulte Uso de pseudo-terminales (pty) para controlar programas interactivos ). Esto se puede hacer con elscript
comando o herramientas comopdip
("Diálogo programado con programas interactivos").Los mensajes de advertencia en Mac OS X 10.6.8 por no proporcionar un pseudo terminal para
x11vnc
:Soluciones usando el
script
comando:fuente
Sudo tiene una opción
-S
que le permite leer el passwd de STDIN.Aquí hay un script de ejemplo para demostrar el proceso:
Su script, simplemente necesitaría hacer algo como:
Esto le permitiría usar comandos sudo en su script sin tener que codificar una contraseña.
Alternativamente, puede agregar a su usuario, o un subconjunto de usuarios, la capacidad de ejecutar x11vnc con sudo, sin una contraseña, pero agregando una línea como esta para
/etc/sudoers
:O cree un
vncusers
grupo, agregue usuarios a ese grupo y agregue lo siguiente a/etc/sudoers
:fuente
sudo
, provienex11vnc -storepassword
.