以前,我使用Tk / Expect和plink(PuTTY)来自动执行远程shell操作。但是,如果不同的shell有不同的提示,或者在非提示shell输出中出现提示字符,则Expect有时会失败(!)
我想知道是否有办法通过plink或某些第三方库来判断远程shell是否期望输入。如果有必要,我可以在套接字层编程。
答案 0 :(得分:2)
不,没有办法可靠地检测您正在工作的级别的shell提示符。一些替代选项可能是:
doSomething ; echo uniqueStringThatMeansThatWeAreDone
- 然后搜索该字符串。exec
您想要的外壳。使用可以直接执行命令的SSH库,而不是尝试编写shell脚本。我不熟悉Tcl中的可用内容,但Perl有Net::SSH::Perl
,它可以让你做以下事情:
my $ssh = Net::SSH::Perl->new("remotehost");
$ssh->login("user", "pass");
my $output = $ssh->cmd("doSomething");