在exec ssh上执行当前shell中的缓冲区内容

时间:2014-12-23 18:48:14

标签: perl shell exec stdin

我的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执行。

有没有办法执行缓冲区的内容?

1 个答案:

答案 0 :(得分:1)

经过一些挖掘后发现ssh在与-n选项一起使用时有一个stdio重定向器。

http://www.pixelbeat.org/programming/stdio_buffering/
要告诉ssh远程命令不需要任何输入,请使用-n选项