【问题标题】:How to get remote command sent via ssh to my host? [closed]如何获取通过 ssh 发送到我的主机的远程命令? [关闭]
【发布时间】:2019-12-20 18:23:53
【问题描述】:

我有两台主机,第一台通过 ssh 发送命令。第二个执行该命令并将输出打印到我的 xterm:

user@host_one:~# ssh user@host_two "ls"
user@host_two's password:
Document Downloads Music Pictures Videos

我想在我的“host_two”上获取远程命令的文本,在我的例子中是“ls”。然后我在 'host_two' 上的 /etc/bash.bashrc 脚本将获取该命令的文本并对其进行处理。

例如,我的 /etc/bash.bashrc 会这样做:

if [ -z "$PS1" ] # PS1 is my own global variable that is set only if it's a non-interaction session
then
        echo $COMMAND_GOT_VIA_SSH
fi

那么我希望得到这样的结果:

user@host_one:~# ssh user@host_two "ls"
user@host_two's password:
ls

【问题讨论】:

  • P.S.当然 /etc/bash.bashrc 保存在我的第二台主机上。
  • 您好,主机二的输出什么时候处理?什么时候登录?
  • 请用其他信息编辑您的帖子,而不是添加评论
  • 提示:如果你废弃/etc/bash.bashrc,拥有bash 作为登录shell 的用户将无法再登录,甚至root 用户也无法登录。更准确地说,他会立即被注销。
  • @Cyrus 带有 ` if [ -z "$PS1" ] ` 的行告诉 ` bash ` 下一个 ` then ` 语句将仅在非交互模式下执行,我已经通过通过 ssh 调用远程命令。

标签: bash ssh sshd


【解决方案1】:

在 host_two 中将以下代码放入 .bashrc

if [ ! -z "$PS1" ]; then # PS1 interaction session echo $(cat /var/tmp/ssh.command) fi

从 host_one 运行:

user@host_one:~# ssh user@host_two "echo ls > /var/tmp/ssh.command"

下次登录 host_two 时,将显示 ssh 命令的文本。

【讨论】:

  • 这个命令太长了,我只想写ssh user@host_two ls
  • mmmh,这行得通,但是如果你想在用户 .bashrc 中使用命令,这是一个问题,因为 .bashrc 在你使用 ssh 发送的命令之前执行。据我所知,这个答案就是答案:) 但是命令是在下一个会话中读取的,当然
  • 在 host_two 上创建一个可执行脚本 /bin/s,其中包含以下两行: #!/bin/bash echo "$1" > /var/tmp/ssh.command 然后在 host_one 上你可以运行 (更短):user@host_one:~# ssh user@host_two "s ls"
猜你喜欢
  • 1970-01-01
  • 2016-10-08
  • 2011-10-22
  • 1970-01-01
  • 2020-10-21
  • 2014-01-20
  • 2012-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多