2015-11-06 119 views
4

我想问一个关于如何应用PuTTY并控制其返回值的问题。我的设置是这样的。从PuTTY运行的shell脚本返回代码到调用批处理文件?

有一个xxxxx.bat文件,其中包含与在喜欢一个ssh连接腻子电话:

putty.ext ssh 10.10.10.10 -l xxxx -pw yyyy -t -m wintest.txt 

文件wintest.txt包含:

echo "wintest.txt: Before execute..." 

/home/tede/n55115/PD/winlinux/RUN.lintest.bsh 

echo "wintest.txt: After execute..." 
echo $? 

文件lintest.bsh包含各种命令,我感兴趣是能够捕获.bsh文件中特定命令的返回值,并从bat文件中调用该值,将其添加到带有警告的if循环中,即if $?(或%ERRORLEVEL - 我不知道什么工作)then BLABLA

我读过很多关于这个职位的,但坦率地说,这是我第一次做与.bat文件过这么所有稍显混乱。

+1

你的榜样将'echo'返回退出代码,可能总是为0. – tripleee

+0

机智对于Windows用户来说,hout比绝对必要的更具有吸引力,是不是有一个原因,你不是以一种理智的语言在远程主机上运行脚本呢? – tripleee

+0

'plink.exe'实用程序出现在PuTTY工具包中。我已经成功地使用了它。 – lit

回答

3

首先,不要使用PuTTY进行自动化,请使用Plink(PuTTY命令行连接工具)。

但即使Plink也无法传播远程命令退出代码。

您可以远程脚本打印退出代码在其输出的最后一行(你与echo $?已经做什么),并具有批处理文件解析的退出代码:

@echo off 

plink.exe putty.ext ssh 10.10.10.10 -l xxxx -pw yyyy -t -m wintest.txt > output.txt 2>&1 

for /F "delims=" %%a in (output.txt) do (
    echo %%a 
    set "SHELL_EXIT_CODE=%%a" 
) 

if %SHELL_EXIT_CODE% gtr 0 (
    echo Error %SHELL_EXIT_CODE% 
) else (
    echo Success 
) 

,但当然,你必须解决您的脚本来返回你想要退出代码(当前代码返回以前echo命令的退出代码):

echo "wintest.txt: Before execute..." 

/home/tede/n55115/PD/winlinux/RUN.lintest.bsh 
EXIT_CODE=$? 

echo "wintest.txt: After execute..." 
echo $EXIT_CODE 
+0

谢谢,这非常有帮助 – onlyf

相关问题