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 -storepasswdy 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/passwden 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 expectuna mejor solución? Si es así, ¿cómo lo usaría en este caso? (Nunca lo he usado expectantes, pero he visto muchos ejemplos desde que publiqué esta pregunta y no puedo expecttrabajar por mi cuenta).
fuente

sudo, provienex11vnc -storepassword. He estado probando variosexpectenfoques y parece que no puedo hacerlo bien. Un ejemplo de usarexpectpara ingresar una contraseña parax11vnc -storepasswordsería muy apreciado. Actualizaré mi pregunta para evitar más confusión.Enter VNC password: usage: send [args] stringen 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.expectsolución funcionan cuando se ingresan manualmente. No funcionan en esteexpectscript ni en ninguna variación que haya probado hasta ahora.Otra opción para evitar esos mensajes de advertencia es ejecutar
x11vncen un pseudo-terminal creado por un comando UNIX (consulte Uso de pseudo-terminales (pty) para controlar programas interactivos ). Esto se puede hacer con elscriptcomando 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
scriptcomando:fuente
Sudo tiene una opción
-Sque 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
vncusersgrupo, agregue usuarios a ese grupo y agregue lo siguiente a/etc/sudoers:fuente
sudo, provienex11vnc -storepassword.