【问题标题】:How to return to the script once sudo is donesudo 完成后如何返回脚本
【发布时间】:2016-09-05 18:50:59
【问题描述】:

我在服务器上运行一个包含以下代码的脚本文件。

ssh username@servername
sudo su - root
cd /abc/xyz
mkdir asdfg

我可以 ssh... 但是下一个命令不起作用.. 脚本不是 sudo-ing。任何的想法?

编辑:能够创建一个机械ID,然后做事..虽然仍在寻找上述问题的答案:|

【问题讨论】:

  • 您在 shell 中看到了什么错误?
  • @StevenSchobert - 没有错误,。我在服务器名称框中。并且不会从我开始的地方回来。
  • 试试exit ?祝你好运。

标签: shell ssh sudo


【解决方案1】:

首先,您的命令将“卡在”第一行,因为它将进入交互模式。 ssh 命令将要求用户提供密码(除非正在使用 sshkey)。如果 ssh 登录到远程服务器,那么它将等待来自标准输入的用户命令。

其次,ssh 命令后面的行将仅在第一个进程退出时执行。这就是您的脚本不是“sudoing”的原因——它正在等待 ssh 结束。

因此,如果您的目的是在远程服务器上运行命令,则将该命令作为参数放入与 ssh 连接相同的行中。在你的情况下:

ssh user@server sudo su - root

但这不会让您满意。我建议你创建一个你想在远程服务器上执行的脚本,然后执行这个脚本。

ssh user@server scriptName

这里的 sudo 非常棘手,因为您的脚本可能再次卡在交互模式等待插入密码,所以我建议您根据脚本重新考虑。

【讨论】:

  • 您好,感谢您的意见。我正在提供 ssh 的密码。现在,一旦我完成输入密码,sudo 命令就不会执行。我现在在目标服务器而不是源服务器中。
  • 如果您要为 ssh 提供密码,那么您可以手动运行脚本。如果是这样,您还可以在远程服务器上提供 sudo / su 密码。我建议您在远程服务器上创建脚本,并在连接后作为 ssh 参数远程运行脚本。只需在远程服务器上创建名为 runme.sh 的脚本文件,然后将要执行的 linex 放入该脚本中
【解决方案2】:

mb47!
您想在远程计算机上运行脚本,对吗?
在远程机器上,创建一个包含您要执行的命令的文件。
然后,在另一台机器上,运行ssh user@machine /path/to/script/you/created/earlier
我希望这有帮助!

ALinux情人

【讨论】:

    猜你喜欢
    • 2012-05-12
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    相关资源
    最近更新 更多