我想将一些字符串打印到远程机器上运行的所有打开的终端进程。目前,我正在使用 ssh 连接远程机器,然后将字符串回显到wall
命令中:
local> ssh [email protected]
(prompt to provide credentials)
remote> echo "123" | wall
有没有一种方法可以只用一个命令就能完成所有操作,并且无需用户交互?
答案1
您需要设置基于 SSH 密钥的身份验证,这样您就不需要输入密码。
在客户端计算机上,运行以下命令将当前用户的公钥复制到服务器的
authorized_hosts
文件中:ssh-copy-id [email protected] <enter password>
确保您现在不需要输入密码:
ssh [email protected] true
然后只需将该命令附加到 SSH 命令即可,如下所示:
ssh [email protected] 'echo asdf | wall'
您可能需要使用-tt
带有 SSH 的标志,以确保在 TTY 中运行该命令。
注意单引号'
,它们确保管道|
不会被本地 shell 解析。