我有一个.bat
文件,我在其中连接 UNIX环境。我将所有值作为参数传递给.bat
文件。当.bat
执行时,它会成功将我连接到UNIX
environment.Below是.bat
文件。
@ECHO OFF
setlocal EnableDelayedExpansion
set n=0
for %%a in (%*) do (
set vector[!n!]=%%a
set /A n+=1
)
SET admPath=%vector[0]%
SET admdatatype=%vector[1]%
SET admeaimethod=%vector[2]%
SET admprefix=%vector[3]%
SET gatewayname=%vector[4]%
SET enterpriseName=%vector[5]%
SET serveruserId=%vector[6]%
SET serverpassword=%vector[7]%
SET iniPath=%vector[8]%
SET userId=%vector[9]%
SET password=%vector[10]%
SET host=%vector[11]%
SET sudoUser=%vector[12]%
echo %admPath%
echo %admdatatype%
echo %admeaimethod%
echo %admprefix%
echo %gatewayname%
echo %enterpriseName%
echo %serveruserId%
echo %serverpassword%
echo %iniPath%
echo %userId%
echo %password%
echo %host%
echo %sudoUser%
echo y | "C:\Program Files\PuTTY\plink" -ssh %userId%@%host% -pw %password% exit
"C:\Program Files\PuTTY\plink" -ssh -t %userId%@%host% -pw %password% "PATH=/bin:/usr/bin:/usr/local/bin /opt/siebel/w44gq8sw/exportwithoutFilter.sh %admPath% %admdatatype% %admeaimethod% %admprefix% %gatewayname% %enterpriseName% %serveruserId% %serverpassword% %iniPath% %password% %sudoUser% " > LOV_export_success.txt 2>&1
调用.bat
文件。
LovExportWithoutFilter.bat "ADMpath" "type" "method" "prefix" "Gateway name" "enterprise name" "user" "password" "mypath" "localuser" "localpassword" "Host" "'/usr/bin/su - globepfdev'"
我删除了上面的实际值,但最后一个参数是SUDO
User。
现在连接到.bat
框后此UNIX
会执行保留在我本地用户的 shell脚本。您还可以在.bat
文件中查看脚本调用(使用putty plink完成)。我也将参数传递给.bat
的脚本。的工作脚本是将我连接到SUDO
用户并执行另一个脚本,.bat
文件成功调用了此本地用户脚本,但与SUDO
用户的连接失败。说sudo: /usr/bin/su - globepfdev: command not found
。我还成功地在environment path
中设置了.bat
。本地用户的脚本位于 - :
#!/bin/bash
admPath=$1
admdatatype=$2
admeaimethod=$3
admprefix=$4
gatewayname=$5
enterpriseName=$6
userId=$7
password=$8
iniPath=$9
serverPassword=${10}
serverSudoUser=${11}
echo "$admPath"
echo "$admdatatype"
echo "$admeaimethod"
echo "$admprefix"
echo "$gatewayname"
echo "$enterpriseName"
echo "$userId"
echo "$password"
echo "$iniPath"
echo "$serverPassword"
echo "$serverSudoUser"
echo "$serverPassword" | sudo -S -l
sudo "$serverSudoUser" <<EOF
./exportWithoutFilter.sh "$admPath" "$admdatatype" "$admeaimethod" "$admprefix" "$gatewayname" "$enterpriseName" "$userId" "$password" "$iniPath"
EOF
在echo
命令的输出中,我可以看到我需要的所有参数值,包括SUDO
用户参数值。它打印所有值都正确,我可以看到 SUDO 值也存在/usr/bin/su - globepfdev
任何人都可以帮我这个吗?为什么我现在收到这个错误?
- :主要观点是,如果我对参数"$serverPassword"
和"$serverSudoUser"
的值进行硬编码,一切正常,我与SUDO
用户的连接并执行进一步的任务。但是当它作为参数传递时它没有连接。谁能解释一下?
做以下工作 - :
echo myPassword | sudo -S -l
sudo /usr/bin/su - globepfdev <<EOF
./exportLOV.sh "$admPath" "$admdatatype" "$admeaimethod" "$admprefix" "$gatewayname" "$enterpriseName" "$userId" "$password" '$admFilter'
EOF