linux 下,登陆远程主机执行命令,我们一般会用:

ssh $hostname "ls -l /tmp"

这里我习惯加双引号,把要执行的命令引起来。

但是,如果我们要在远程主机上执行一个脚本,而这个脚本在本地,一般会这样:

1、先拷贝脚本到远端主机,比如我的测试脚本是获取远端的主机名,使用scp 或者rsync什么的,先拷贝过去

2、执行:ssh $hostname "sh $脚本"

这种方法多了拷贝的过程,麻烦了点,当然,linux 是喜欢简单,一切从简,因此还有如下方法:

ssh $hostname bash < /tmp/getHostname.sh 

这样一步搞定,不需要拷贝脚本到远端主机上,方便吧。

 

但这里有个问题,/tmp/getHostname.sh  这个脚本里面如果需要传入参数的话,这种方式,我测试了下,似乎传不进去,谁如果有方法的话,欢迎交流。