【问题标题】:sshpass doesn't work in Bash but work outside on command line [duplicate]sshpass 在 Bash 中不起作用,但在命令行外部起作用 [重复]
【发布时间】:2020-04-03 22:12:19
【问题描述】:

我正在编写一个脚本来从远程服务器获取文件列表,每个远程服务器都有自己的密码、IP 和用户以及路径。这就是我使用 sshpass 动态传递密码参数的原因。这是我暂时获取文件列表的脚本:

user='username'
pass='password'  ->>> LOCATION_OF_REMOTE='hostpath'
ip='hostip'
path='hostpath'
data=`/usr/bin/sshpass -p $pass sftp -oBatchMode=no -b - -oStrictHostKeyChecking=no $user@$ip <<_EOF_
cd $path
ls
_EOF_`
echo $data >> list_of_files.txt

运行此脚本时出现错误:

错误:sshpass:无法运行命令:没有这样的文件或目录

虽然完全相同的命令在命令行脚本之外工作正常。它在脚本中时不起作用。我试图以 root 和非 root 身份运行它,两者都使用。我不知道为什么它在脚本中不起作用。

【问题讨论】:

标签: bash sshpass


【解决方案1】:

我犯了一个非常愚蠢的错误。通过定义一个变量“PATH”,shell 正在考虑它的环境路径,这就是我得到那个愚蠢错误的原因。

【讨论】:

  • 您的问题显示path(这是安全的),而不是PATH(不是)。请确保将来该问题显示的代码本身会产生您遇到的确切问题。
  • (顺便说一句,这类错误是为什么the POSIX specification advises 保留至少一个小写字符的变量名供应用程序使用,而不是修改系统或外壳行为)
猜你喜欢
  • 2018-06-21
  • 1970-01-01
  • 2014-04-01
  • 1970-01-01
  • 2021-05-27
  • 2021-12-08
  • 1970-01-01
  • 2018-11-01
  • 1970-01-01
相关资源
最近更新 更多