Linux期待。如何用 "log_user 0"删除第一个空行?

标签 linux expect

我有这个脚本。

“log_user 0”将隐藏询问密码,但留下一个空行。 我想删除这个空行。

脚本:

#!/usr/bin/expect

log_user 0
set timeout 10

if {[llength $argv] == 0} {
  send_user "Usage: sshpwd \'password\' ssh ...\n"
  exit 1
}

set cmd [lrange $argv 1 end]
set pwd [lindex $argv 0]

eval spawn $cmd
expect {
    "*yes/no*" { send "yes\r" ; exp_continue }
    "*assword:" { send "$pwd\r"; interact; }
}

执行示例(123 之前的空行):

username@localhost:~$ ./sshpwd.exp password ssh username@localhost "(echo \"123\") && date '+%Y.%m.%d' && echo [TEST]"

123
2016.04.06
[TEST]

如果我在脚本中删除字符串“log_user 0”时执行的示例(123 之前没有空行,但有 'spawn...'、'passw...'):

username@localhost:~$ ./sshpwd.exp password ssh username@localhost "(echo \"123\") && date '+%Y.%m.%d' && echo [TEST]"
spawn ssh username@localhost (echo "123") && date '+%Y.%m.%d' && echo [TEST]
username@locahost's password:
123
2016.04.06
[TEST]

我想看到这个输出:

username@localhost:~$ ./sshpwd.exp password ssh username@localhost "(echo \"123\") && date '+%Y.%m.%d' && echo [TEST]"
123
2016.04.06
[TEST]

最佳答案

试试 spawn -noecho ...

此外,这样做比 eval spawn -noecho $cmd 更安全:

spawn -noecho {*}$cmd

关于Linux期待。如何用 "log_user 0"删除第一个空行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36446520/

相关文章:

java - 期待冒险

linux - 如何从期望脚本中转义异常/唯一字符?

linux - 无法在 Linux 中安装 Expect 实用程序

linux - 帧缓冲区不可用

linux - 在 Alpine linux 上查找 mongo 源的位置

linux - 是否可以反向引用扩展?

terminal - 我可以在 Unix 中运行 jshell 吗?

python - 自动排除网络故障

c++ - 使用QT查看来自相机的流图像

linux - 用属性文件中提到的值替换标记的脚本