Mou*_*inX 17 bash shell-script expect here-document
我在 bash 脚本中使用 here-documents 来自动安装和设置,其中多次需要密码。我输入密码一次,脚本将其传递给各种命令。在大多数情况下,here-document 方法可以很好地处理这个问题。但是,在一种情况下,我收到此错误:
Enter VNC password: stty: standard input: Inappropriate ioctl for device
Verify password:
stty: standard input: Inappropriate ioctl for device
Run Code Online (Sandbox Code Playgroud)
请注意,此错误消息来自x11vnc -storepassword(而非来自sudo.)
我的问题x11vnc -storepasswd与这里有关,这是我的代码:
sudo x11vnc -storepasswd ~/.vnc/passwd << ENDDOC
password
password
y
ENDDOC
Run Code Online (Sandbox Code Playgroud)
这显然(来自错误)不起作用。我很感激如何sudo x11vnc -storepasswd ~/.vnc/passwd在脚本中实现的工作示例。
如果有帮助,提示如下所示:
输入 VNC 密码:
验证密码:
将密码写入 /home/user/.vnc/passwd? [年]/年
使用expect会是更好的解决方案吗?如果是这样,在这种情况下我将如何使用它?(我以前从未使用expect过,但自从发布这个问题以来我看过很多例子,我无法自己expect开始工作。)
小智 7
避免这些警告消息的另一个选择是x11vnc在由 UNIX 命令创建的伪终端中执行(请参阅使用伪终端 (pty) 来控制交互式程序)。这可以通过script命令或工具完成,例如pdip(“带有交互式程序的程序化对话”)。
Mac OS X 10.6.8 上未提供伪终端的警告消息x11vnc:
# x11vnc 0.9.14
sudo x11vnc -storepasswd ~/.vnc/passwd << ENDDOC
password
password
y
ENDDOC
# Enter VNC password: stty: stdin isn't a terminal
#
# Verify password:
# stty: stdin isn't a terminal
# Write password to ~/.vnc/passwd? [y]/n Password written to: ~/.vnc/passwd
Run Code Online (Sandbox Code Playgroud)
使用script命令解决:
# GNU script command
sudo script -q -c 'x11vnc -storepasswd ~/.vnc/passwd' <<ENDDOC /dev/null
password
password
y
ENDDOC
# ... or ...
printf '%s\n' 'password' 'password' 'y' |
sudo script -q -c 'x11vnc -storepasswd ~/.vnc/passwd' /dev/null
# FreeBSD script command
sudo script -q /dev/null x11vnc -storepasswd ~/.vnc/passwd <<ENDDOC
password
password
y
ENDDOC
Run Code Online (Sandbox Code Playgroud)
x11vnc期望其标准输入是终端,并且它会更改终端模式以避免在您键入时回显密码。当标准输入不是终端时,stty关闭和重新打开回显的调用会失败,因此您会看到警告。
Expect确实是一个解决方案。尝试这个脚本(未经测试):
#!/usr/bin/expect -f
spawn x11vnc -storepasswd ~/.vnc/passwd
expect "password:" {send "swordfish" "\r"}
expect "password:" {send "swordfish" "\r"}
expect "Write*\?" {send "y\r"}
Run Code Online (Sandbox Code Playgroud)
或者,如果可以的话,请使用 RFB 以外的身份验证方法(-passwdfile或 SSL 客户端证书)。
| 归档时间: |
|
| 查看次数: |
84146 次 |
| 最近记录: |