在bash上用ssh运行本地机器上的命令

我想在本地系统上运行一个命令,而我已经在bash中远程系统ssh了。 有没有办法做到这一点? 这就是我要的:

#!/bin/bash ssh mysystem@ip <<'SSH' #Do something #Run a command here on local machine and not on machine I have sshed to #Do Something exit SSH 

编辑:我想呼应一些消息,因为回声命令输出不会显示从远程机器,我想从本地运行。

当您使用SSH时,密钥序列<enter>~是一个转义前缀,允许您暂停SSH并将密钥序列发送到主机端的ssh客户端。 顺序<enter>~<ctrl + z>会暂停(停止)ssh-client作业,并在调用系统中提示你。 键入fg (如果你在一个Unix shell上)将会恢复你的SSH会话。

您可以通过输入<enter>~?来查看其他ssh转义序列<enter>~? 。 序列<enter>~. 将终止连接,并且在会话在远程机器上锁定时非常方便。

(使用非美式键盘布局的用户使用~作为死音来组成重音和二合音,很明显,在所有这些序列中键入~两次)

这些序列可以在你操作SSH会话和使用d typign命令时使用,而不是脚本。

由于您似乎想在脚本中找到这种方法,因此直接的解决方案是将ssh命令包含回原始主机。

如果您可以更改脚本,则可以使用期望脚本 – expect_example_and_tips

这使您可以启动一个“ssh进程”,可以在远程机器上发送命令,同时在本地机器上运行命令。

蟒蛇虽然在我看来更容易 – 例如:

 #!/usr/bin/env python import pexpect PROMPT = "\$|\%|\>" ssh_cmd = "ssh user@192.168.1.1" try: ssh = pexpect.spawn(ssh_cmd) ssh.sendline("echo hello on remote") ssh.expect(PROMPT) print "hello on local machine" ssh.close() except Exception as e: print e sys.exit(2)