linux – 如何在bash中一起使用ssh和sudo?
发布时间:2020-12-13 17:58:38 所属栏目:Linux 来源:网络整理
导读:我无法找到描述此特定方案的问题. 我正在尝试执行一个非常基本的bash脚本来从多台机器上检索日志记录.我在本地运行脚本,但是需要通过ssh访问外部机器,以及在该机器上访问特权用户sudo … ssh myuser@machine.netsudo su - privledged_usercat logs file.txt
我无法找到描述此特定方案的问题.
我正在尝试执行一个非常基本的bash脚本来从多台机器上检索日志记录.我在本地运行脚本,但是需要通过ssh访问外部机器,以及在该机器上访问特权用户sudo … ssh myuser@machine.net sudo su - privledged_user cat logs > file.txt 使用sh -x运行它会显示bash卡在’ssh’行上.所以我尝试修改它: ssh myuser@machine.net sudo su - privledged_user cat logs > file.txt 这似乎也无限期地停滞不前.这个问题有更好的解决方案吗?从我所知道的,我没有看到使用sudo su的方法…… 谢谢你的帮助! 解决方法
我在当前环境中实现这一点的方法是使用-t标志运行ssh,强制tty分配,然后在其中运行sudo -u root,如下所示:
ssh -t hostname << EOF command1 sudo -u root command2 sudo -u otheruser "command3 | command4" sudo -u root /bin/bash -c "command5; command6; command7" command8 && ( sudo -u otheruser /bin/bash -c "cmd1 ${1}; cmd2 {$2}" ) || echo cmd2 did not work EOF 我的帐户位于远程端的sudoers中,因此无需密码. 此示例显示了在单个ssh会话中执行此操作的不同方法,包括使用bash或子shell运行多个命令.另请注意,如果将上述代码放入可执行脚本中,则可以将命令行参数($1和$2)传递给ssh,这些参数将被展开,然后在远程端引用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |