2010-06-04 116 views
0

是换行符吗?提示?究竟是什么?PUTTY/PLINK如何确定已返回的命令?

试图通过plink运行powershell并执行该命令,但plink无法识别它已完成并且会话挂起。然而,最令人好奇的是,当通过shell发送(通过Putty)时,该命令成功执行。但是,当通过plink发送时,相同的命令挂起...

任何想法?

回答

1

好吧,我还不太清楚问题所在,但是我通过TeamCity论坛找到了一个解决方法。

基本上你想呼应的一些abitrary字符串,并通过管道将输出到您的PowerShell的可执行文件,像这样:

echo 'executing powershell...' | C:\windows\system32\windowspowershell \v1.0\powershell.exe exit 1 

所以,那么你完全砰砰命令变为:

plink.exe [email protected] -i key.ppk -P 22 -batch -v "echo 'executing powershell...' | C:\windows\system32\windowspowershell\v1.0\powershell.exe exit 1" 

铌。 Plink仍然会使用这种方法通过返回代码和控制台输出。

链接的TeamCity论坛:

http://youtrack.jetbrains.net/issue/TW-6021

希望这有助于

1

Telnet几乎是一个原始的TCP连接。所有Putty需要返回的是来自服务器的响应。其余由shell和SSH/Telnet服务器控制。

当您的任务正在运行时,它不会返回命令提示符。

在Linux,Unix和Mac OS X上,可以在命令后面加上&,以便在后台运行它并返回命令提示符。

尝试在本地终端/命令shell中运行它。你应该基本看到同样的事情。

+0

那么说一个公平的假设,说powershell正在悄然成功?怎么会这样?我甚至明确设置了返回码,回显提示,抛出异常,它仍然挂起? – mwjackson 2010-06-04 16:39:21

+0

它运行得很快,甚至可能产生另一个进程,然后死亡?如果没有,那么shell就不会得到控制权。退货代码是如何返回的?它们是否被返回到服务器上的标准输出?你应该把这个调用放在一个允许你处理返回码的脚本中。 – 2010-06-04 16:42:17

+0

当我从外壳(腻子)运行时,它检测到成功完成。当我通过plink运行它时,该命令仍然运行,但plink挂起等待响应? – mwjackson 2010-06-04 16:49:53

0

我有同样的问题与其他程序。我在最后一个命令后使用了> & 2(将输出重定向到std err),这对我来说工作得很好。

0

只需将“return XX”添加到远程shell脚本中,它将返回本地控制台的值。 plink完成后,键入echo %errorlevel%以查看返回码XX。