我的perl代码执行此操作
#!/usr/bin/perl
sleep 2;
exec 'ssh', '-o', "ConnectTimeout=10", "newhost", "sleep 3;pwd";
问题是睡眠正在执行我在终端上输入的内容(执行期间) 在newhost中消失到非交互式shell。
eg:
user@a02$perl test.pl
ls
user@a02$ #ls is not executed
如果我不使用exec或system,命令ls执行。
有没有办法执行缓冲区的内容?
答案 0 :(得分:1)
经过一些挖掘后发现ssh在与-n选项一起使用时有一个stdio重定向器。
http://www.pixelbeat.org/programming/stdio_buffering/
要告诉ssh远程命令不需要任何输入,请使用-n选项