通过SSH在远程主机上运行功能

时间:2014-08-05 10:51:07

标签: linux bash shell ssh

我的脚本中有一些数字函数:

function chk_host() { ...... }
function run_test() { ...... }

我希望通过ssh在远程计算机上运行:

ADDR=${ADDR:-"10.192.11.22"}
ssh -T user@${ADDR} << EOF
  chk_host
  run_test
}

显然,这不起作用chk_hostrun_test不是命令,在远程主机上不可用。我想,我可以做类似的事情:ssh -T user@${ADDR} "$( declare -f run_test ); run_test << EOF但是我有很多这样的东西,最终将作为命令行参数运行。这样做的最佳方法是什么?

1 个答案:

答案 0 :(得分:4)

我想,达到目标最安全的方法是将带有所有必要功能的shell脚本上传到目标主机,然后通过shell运行命令,例如ssh user@${HOST} "source /path/to/uploaded_functions.sh; afunc <args>"

先前的上传很有用(尽管可能没有必要),因为在命令行中评估所有必需的函数可能会导致在正确转义所有特殊字符和序列时出现难题。