向远程机器发送打印字符串命令

向远程机器发送打印字符串命令

我想将一些字符串打印到远程机器上运行的所有打开的终端进程。目前,我正在使用 ssh 连接远程机器,然后将字符串回显到wall命令中:

local> ssh [email protected]
(prompt to provide credentials)
remote> echo "123" | wall 

有没有一种方法可以只用一个命令就能完成所有操作,并且无需用户交互?

答案1

您需要设置基于 SSH 密钥的身份验证,这样您就不需要输入密码。

  1. 在客户端计算机上,运行以下命令将当前用户的公钥复制到服务器的authorized_hosts文件中:

    ssh-copy-id [email protected]
    <enter password>
    
  2. 确保您现在不需要输入密码:

    ssh [email protected] true
    
  3. 然后只需将该命令附加到 SSH 命令即可,如下所示:

    ssh [email protected] 'echo asdf | wall'
    

您可能需要使用-tt带有 SSH 的标志,以确保在 TTY 中运行该命令。

注意单引号',它们确保管道|不会被本地 shell 解析。

相关内容