我的脚本中有一些数字函数:
function chk_host() { ...... }
function run_test() { ...... }
我希望通过ssh在远程计算机上运行:
ADDR=${ADDR:-"10.192.11.22"}
ssh -T user@${ADDR} << EOF
chk_host
run_test
}
显然,这不起作用chk_host
或run_test
不是命令,在远程主机上不可用。我想,我可以做类似的事情:ssh -T user@${ADDR} "$( declare -f run_test ); run_test << EOF
但是我有很多这样的东西,最终将作为命令行参数运行。这样做的最佳方法是什么?
答案 0 :(得分:4)
我想,达到目标最安全的方法是将带有所有必要功能的shell脚本上传到目标主机,然后通过shell运行命令,例如ssh user@${HOST} "source /path/to/uploaded_functions.sh; afunc <args>"
先前的上传很有用(尽管可能没有必要),因为在命令行中评估所有必需的函数可能会导致在正确转义所有特殊字符和序列时出现难题。