我必须在远程机器上运行本地shell脚本(windows/Linux)。
我在机器A和机器B上都配置了SSH。我的脚本在机器A上,它将在远程机器B上运行我的一些代码。
本地和远程计算机可以是基于Windows或Unix的系统。
是否有一种方法来运行这个使用plink/ssh?
我必须在远程机器上运行本地shell脚本(windows/Linux)。
我在机器A和机器B上都配置了SSH。我的脚本在机器A上,它将在远程机器B上运行我的一些代码。
本地和远程计算机可以是基于Windows或Unix的系统。
是否有一种方法来运行这个使用plink/ssh?
当前回答
如果它是一个脚本,那么上面的解决方案是没问题的。
我会安排Ansible来做这项工作。它以同样的方式工作(Ansible使用ssh在Unix或Windows的远程机器上执行脚本)。
它将更具结构化和可维护性。
其他回答
<hostA_shell_prompt>$ ssh user@hostB "ls -la"
这将提示您输入密码,除非您已经将hostA用户的公钥复制到用户.ssh目录的home目录下的authorized_keys文件。这将允许无密码身份验证(如果在ssh服务器的配置上接受作为身份验证方法)。
首先,使用scp将脚本复制到机器B
[user@machineA]$ scp /path/to/script user@machineB:/home/user/path
然后,运行脚本
[user@machineA]$ ssh user@machineB "/home/user/path/script"
如果您已经为脚本授予了可执行权限,那么这将起作用。
如果Machine A是一台Windows机器,您可以使用Plink (PuTTY的一部分)和-m参数,它将在远程服务器上执行本地脚本。
plink root@MachineB -m local_script.sh
如果Machine A是一个基于unix的系统,你可以使用:
ssh root@MachineB 'bash -s' < local_script.sh
您不应该必须将脚本复制到远程服务器才能运行它。
假设您的意思是希望从“本地”机器自动执行此操作,而不需要手动登录到“远程”机器,那么您应该查看名为Expect的TCL扩展,它正是为这种情况而设计的。我还提供了一个通过SSH登录/交互的脚本链接。
https://www.nist.gov/services-resources/software/expect
http://bash.cyberciti.biz/security/expect-ssh-login-script/
如果它是一个脚本,那么上面的解决方案是没问题的。
我会安排Ansible来做这项工作。它以同样的方式工作(Ansible使用ssh在Unix或Windows的远程机器上执行脚本)。
它将更具结构化和可维护性。