Shell sudo完成后如何返回脚本

Shell sudo完成后如何返回脚本,shell,ssh,sudo,Shell,Ssh,Sudo,我在服务器上运行一个脚本文件,其中包含以下代码 ssh username@servername sudo su - root cd /abc/xyz mkdir asdfg 我能嘘。。。但是下一个命令不起作用。。脚本不是sudo-ing。有什么想法吗 编辑:能够创建一个机械id,然后进行操作。。尽管仍在寻找上述问题的答案:|首先,您的命令将“卡住”在第一行,因为它将进入交互模式。ssh命令要求用户提供密码(除非使用sshkey)。如果ssh登录到远程服务器,那么它将等待来自标准输入的用户命令

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

ssh username@servername
sudo su - root
cd /abc/xyz
mkdir asdfg
我能嘘。。。但是下一个命令不起作用。。脚本不是sudo-ing。有什么想法吗


编辑:能够创建一个机械id,然后进行操作。。尽管仍在寻找上述问题的答案:|

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

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

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

ssh user@server sudo su - root
但这不会让你满意。我建议您为要在远程服务器上执行的内容创建一个脚本,然后执行该脚本

ssh user@server scriptName

这里的sudo操作非常棘手,因为您的脚本可能会再次陷入交互模式,等待插入密码,因此我建议您在脚本的基础上重新思考。

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

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

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

ssh user@server sudo su - root
但这不会让你满意。我建议您为要在远程服务器上执行的内容创建一个脚本,然后执行该脚本

ssh user@server scriptName
这里的sudo非常棘手,因为您的脚本可能会再次陷入交互模式,等待插入密码,因此我建议您根据脚本重新考虑。

mb47!
您想在远程计算机上运行脚本,对吗?
在远程计算机上,创建一个包含要执行的命令的文件。
然后,在另一台机器上运行
sshuser@machine/path/to/script/you/created/previous

我希望这有帮助!

ALinuxLover

mb47!
您想在远程计算机上运行脚本,对吗?
在远程计算机上,创建一个包含要执行的命令的文件。
然后,在另一台机器上运行
sshuser@machine/path/to/script/you/created/previous

我希望这有帮助!


ALinuxLover

您在shell中看到了什么错误?@StevenSchobert-没有错误,。我在服务器名框中。不从我开始的地方返回。是否尝试退出?祝你好运。你在壳里看到了什么错误?@StevenSchobert-没有错误,。我在服务器名框中。不从我开始的地方返回。是否尝试退出?祝你好运。嗨,谢谢你的意见。我正在为ssh提供密码。现在,一旦我输入完密码,sudo命令就不会执行了。我现在在目标服务器中,而不是源服务器中。如果您为ssh提供密码,则手动运行脚本。如果是这样,您还可以在远程服务器上提供sudo/su密码。我建议您在远程服务器上创建脚本,并在连接后作为ssh参数远程运行脚本。只需在远程服务器上创建名为i.e.
runme.sh
的脚本文件,并将要执行的linex放入该脚本,谢谢您的输入。我正在为ssh提供密码。现在,一旦我输入完密码,sudo命令就不会执行了。我现在在目标服务器中,而不是源服务器中。如果您为ssh提供密码,则手动运行脚本。如果是这样,您还可以在远程服务器上提供sudo/su密码。我建议您在远程服务器上创建脚本,并在连接后作为ssh参数远程运行脚本。只需在远程服务器上创建名为i.e.
runme.sh
的脚本文件,并将要执行的linex放入该脚本中