gpt4 book ai didi

powershell - 通过批处理将命令运行到 openssl

转载 作者:行者123 更新时间:2023-12-04 15:43:44 26 4
gpt4 key购买 nike

我正在尝试在正常运行时间监控中设置一个自定义脚本,并让此命令运行 openssl 并运行我传递给它的参数。

openssl s_client -CAfile C:\apcerts\certs\ -quiet -connect ${HOST}:${PORT} > ${TMPF} 2>&1 < EOF
<TF80DOC><XPLN/></TF80DOC>
EOF

if (Select-String "Update Level" ${TMPF} > /dev/null)
{
exitstatus=$STATE_OK
Select-String "Update Level" ${TMPF} | sort | uniq}
elseif (Select-String "Regulatory" ${TMPF} > /dev/null)
{
exitstatus=$STATE_OK
Select-String "Regulatory" ${TMPF} | sort | uniq}
else{
echo `date` >> /tmp/caught_errs.out
cat ${TMPF} >> /tmp/caught_errs.out
echo " " >> /tmp/caught_errs.out
exitstatus=$STATE_CRITICAL
}
rm -f ${TMPF} 2> /dev/null

exit ${exitstatus}
我想让变量 ${host}:${port} 留空,我想要一个参数,我手动输入信息并用该信息填充字段。
例如,我需要连接到 blank-xml.myinfo.com:30011。
我遇到的问题是当我在自定义监视器上设置它时,我有一个 .bat 可以打开 openssl 但无法打开 .txt 文件来运行给定的命令。
我需要做什么才能让它发挥作用。
更新:
我制作了一个批处理文件,将信息传递给小得多的 openssl。
@echo off
c:\OpenSSL-Win64\bin\openssl s_client -connect help-xml.helpme.com:443
此部分效果很好,可在屏幕上显示所需的信息。我还需要向窗口发送另一个命令,但收到一条错误消息,指出 < 命令不是可执行文件或批处理。
该命令是 <TF80DOC><XPLN/></TF80DOC>我曾尝试使用 & 符号并在它之前使用过 echo 但仍然遇到相同的错误,或者屏幕会立即弹出并关闭而没有任何信息。
if then 语句在我运行后起作用 <TF80DOC><XPLN/></TF80DOC>因为这有显示该语句正在寻找的信息。但如果我无法获得 <TF80DOC><XPLN/></TF80DOC>s_client -connect help-xml.helpme.com:443 之后发送到 openssl运行然后 if 语句将永远不会工作。
更新:
s_client -connect help-xml.helpme.com:443 之后,我已将 powershell 命令更改为管道中的命令
新代码看起来像
@' 
<TF90DOC><XPLN/></TF90DOC>
'@ | C:\OpenSSL-Win64\bin\openssl s_client -quiet -connects_client -connect help-xml.helpme.com:443 > test1.txt 2>&1
if then 语句不是问题,因为我知道如何修复它的那部分。代码的 powershell 部分有效,但需要我按 Enter,这不是我需要它做的。我需要它在没有用户输入的情况下自动执行命令
对于批处理命令,我对其进行了一些细微的更改,它们是
@echo off
setlocal enabledelayedexpansion
set "var=<TF90DOC><XPLN/></TF90DOC>"

echo echo !var! | C:\OpenSSL-Win64\bin\openssl s_client -connect tf90-xml.bsi.com:443> test1.txt 2>&1
这个命令仍然给我错误

< was unexpected at this time.

最佳答案

一开始我完全误解了您的问题,并且没有意识到您需要将命令发送到新打开的 openssl 实例。为此,您需要通过管道将您想要的命令发送到 openssl。

@echo off
echo ^<TF80DOC^>^<XPLN/^>^</TF80DOC^>|c:\OpenSSL-Win64\bin\openssl s_client -connect help-xml.helpme.com:443

请注意,这是未经测试的,您可能还必须转义转义字符:
echo ^^^<TF80DOC^^^>^^^<XPLN/^^^>^^^</TF80DOC^^^>|c:\OpenSSL-Win64\bin\openssl s_client -connect help-xml.helpme.com:443

如果您需要发送多个命令,请将它们放在一个单独的批处理文件中,每个命令前面都有 echo并将其通过管道传递给 openssl 命令,如下所示:

命令.bat
@echo off
echo echo This is one command.
echo echo This is another command.

main.bat
@echo off
commands.bat|C:\OpenSSL-Win64\bin\openssl s-client -connect help-xml.helpme.com:443

关于powershell - 通过批处理将命令运行到 openssl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27298364/

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