【发布时间】:2016-11-01 03:41:19
【问题描述】:
我正在尝试在远程机器上运行以下命令,但没有执行任何操作,谁能指出以下脚本的问题?
仅供参考,settings.yml 和 fuscation_util.rb 文件存在于testuser 帐户中
脚本:
sshpass -p "PASSWORD" ssh -o StrictHostKeyChecking=no -T root@HOSTNAME <<EOF
su - testuser
NEWLINE=$'\n'
read -s -p "Enter Presto Password:${NEWLINE}" VD_PASSWORD
KEY=`cat settings.yml |grep '^key:'|sed 's/^key: //'`
VALUE=`ruby fuscation_util.rb encrypt "$KEY" "$VD_PASSWORD"`
echo "$VALUE"
EOF
输出:
cat: settings.yml: No such file or directory
ruby: No such file or directory -- fuscation_util.rb (LoadError)
只有当我尝试将 poutput 分配给某个变量时,我才会遇到错误,使用下面的脚本我没有收到任何错误
脚本:
sshpass -p "PASSWORD" ssh -o StrictHostKeyChecking=no -T root@HOSTNAME <<EOF
su - testuser
NEWLINE=$'\n'
read -s -p "Enter Presto Password:${NEWLINE}" VD_PASSWORD
cat settings.yml |grep '^key:'|sed 's/^key: //'
ruby fuscation_util.rb encrypt "testvalue" "testpassword"
EOF
输出:
WORKING FINE
【问题讨论】:
-
尝试将确切的路径添加到文件 w.r.t
rootuser。 -
@Shravan40 - 这是一个很好的建议 - 介意我将其作为第二个选项添加到我的答案中吗?
-
@Lix : 请补充。
-
我想指出一些你可以改变/改进的事情。 1. 我认为在 ssh 脚本中执行
read和获取VD_PASSWORD没有任何意义。您可以从外部执行并将其传入。 2. 正如其他人所建议的那样,对 settings.yml 和 fuscation_util.rb 使用绝对路径 -
cat: /opt/settings.yml: 没有这样的文件或目录 ruby: 没有这样的文件或目录 -- /opt/fuscation_util.rb (LoadError) 使用绝对路径也会出现同样的错误