我有这个剧本。
"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之前没有空行,但有‘spaw..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]发布于 2016-04-06 13:50:58
试试spawn -noecho ...
另外,与eval spawn -noecho $cmd不同,这样做更安全:
spawn -noecho {*}$cmdhttps://stackoverflow.com/questions/36446520
复制相似问题