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

时间:2016-04-06 09:11:28

标签: 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之前没有空白行,但产生了......',' 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]

1 个答案:

答案 0 :(得分:0)

尝试spawn -noecho ...

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

spawn -noecho {*}$cmd
相关问题