我有这个脚本。
" 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之前没有空白行,但产生了......',' 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]
答案 0 :(得分:0)
尝试spawn -noecho ...
此外,代替eval spawn -noecho $cmd
,这样做更安全:
spawn -noecho {*}$cmd