【问题标题】:sudo: command not found while using plinksudo:使用 plink 时找不到命令
【发布时间】:2017-06-22 14:53:08
【问题描述】:

您好,我创建了一个批处理文件 (run.bat),在执行后,我借助 plink 将我连接到 UNIX 服务器。但是问题从这一点开始我必须在连接到我的服务器后执行一个脚本,该脚本包含一个命令sudo -l。执行后,我收到主题中提到的错误,有人可以帮我解决这个问题吗??

批处理文件-:

"C:\Program Files\PuTTY" plink -ssh -pw Tos@12Ts w44dvftyw@caa1607UX009.wvd.abcd.net /opt/sieb/w44dvftyw/run.sh

脚本文件(run.sh) -:

#!/bin/bash
sudo -l

上面写着

sudo:找不到命令

但是当我在 UNIX 服务器上正常运行我的脚本时,它运行没有问题。我在这里缺少什么以使其以这种方式工作,请帮忙。

【问题讨论】:

  • 您在公共论坛上发帖时可能需要隐藏用户名和密码
  • @mjsqu 这不是原始密码或用户名
  • "bash -x /opt/sieb/w44dvftyw/run.sh" 替换你的命令可能会有用。如果它只是说sudo -l 是正在运行的东西,而不是像sudo -l$'\r' 这样的东西,这强烈地告诉我们我们需要调整路径。
  • 检查用户 w44dvftyw 是否被添加到 sudoers (sudo) 组中。
  • @TusharSharma 重复我之前的评论:stackoverflow.com/questions/21659637/…

标签: bash unix


【解决方案1】:

诸如 ~/.profile~/.bash_profile 之类的脚本负责设置当前用户的 PATH 仅在登录 shell 上运行。

运行sh -c 'somescript'(由ssh host 'somescript' 执行)既不是登录shell,也不是交互式shell;因此,它不会从此类脚本中获益。

这意味着以这种方式运行的命令可能不存在对PATH(在您的情况下为/usr/local/bin)的添加。

在您的选择中:

  • 将您想要的 PATH 作为远程运行命令的一部分传递。这可能看起来像:

    plink -ssh user@host "PATH=/bin:/usr/bin:/usr/local/bin /opt/sieb/w44dvftyw/run.sh"
    
  • 在您正在运行的脚本中嵌入一个工作值:

    #!/bin/bash
    PATH=/bin:/usr/bin:/usr/local/bin 
    # ...put the rest of your script here.
    

【讨论】:

  • 谢谢查尔斯 :)
猜你喜欢
  • 1970-01-01
  • 2012-10-11
  • 2020-01-10
  • 2022-01-04
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 2014-07-06
相关资源
最近更新 更多