gpt4 book ai didi

bash - 从 PuTTY 运行的 shell 脚本返回代码到调用批处理文件?

转载 作者:行者123 更新时间:2023-11-29 09:13:53 25 4
gpt4 key购买 nike

想请教一个关于如何应用PuTTY并控制其返回值的问题。我的设置是这样的。

有一个 xxxxx.bat 文件,其中包含带有 ssh 连接的 PuTTY 调用,例如:

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 文件做任何事情,所以有点困惑。

最佳答案

首先,自动化不要用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

关于bash - 从 PuTTY 运行的 shell 脚本返回代码到调用批处理文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33566978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com