我想通过ssh执行一些命令(例如,pwd)。
ssh root@jump pwd
我用期望包装它,所以它变成" e"命令,它运作良好。
./e jump
但管道后输出丢失,无法显示" pwd"命令
cat list.txt | xargs -I xx ./e xx
这是e脚本
[root@jump tmp]# cat ./e
expect -d -c '
spawn ssh root@'$1' pwd
expect "*assword:" {
send "r41\r"
sleep 1
}
sleep 3
'
**虽然管道之后的ssh没问题,但回声xx仅用于添加更多管道**
echo xx | ssh root@jump pwd
答案 0 :(得分:0)
使用;
分隔复合语句中的命令
echo xx | ssh root@jump; pwd
答案 1 :(得分:0)
我不确定这里的echo xx
重定向。但是,在期望代码中,只需添加一个expect
语句以等待pwd
执行
expect -c '
spawn ssh dinesh@myremotemachine pwd
expect "*word:" {
send "root\r"
#The reason for adding '/' here is to wait for the
#directory to get printed and since the directory
#will have the char '/' such as
#/users/dinesh/pgms/expect
expect "/"
sleep 1
}
sleep 3
puts "leaving"
'
我在远程计算机上对此进行了测试,您可以根据预期的字符自定义期望字符。如果这也没有帮助,请提供错误输出。