使用多个命令在远程主机上执行 grep

使用多个命令在远程主机上执行 grep

第二个命令被忽略

ssh -q -t -o ConnectTimeout=10 learnserver sudo su - root -c 'hostname' && "/grep PermitRootLogin /opt/ssh/etc/sshd_config/"

答案1

您可以将命令集作为脚本传递到 ssh。以你的情况为例

{
  echo "sudo su -"
  echo "hostname"
  echo "grep PermitRootLogin /opt/ssh/etc/sshd_config/"
} > /tmp/some-script.sh

进而

ssh your-remote < /tmp/some-script.sh

请注意,“脚本创建”只是您的脚本应该如何的一个示例。

答案2

首先,你确实不需要sudo su,也肯定不需要sudo su - root。该su命令默认为 root,但该sudo命令的存在是为了运行需要以 root 身份运行的命令。所以你只需要sudo command.也就是说,您应该避免以 root 身份运行命令,除非确实需要,并且hostname不需要 root 身份。考虑到所有这些,这应该可以满足您的需要:

ssh -q -t -o ConnectTimeout=10 learnserver sh -c "hostname && sudo grep PermitRootLogin /opt/ssh/etc/sshd_config"

换句话说,不要尝试运行多个命令,而是将多个命令合并为一个。在这里,我们使用的sh -c command意思是“启动sh然后运行command”。

相关内容