sudo-命令未找到错误

时间:2017-10-10 14:02:09

标签: bash shell batch-file unix sudo

我有一个.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

0 个答案:

没有答案