You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

远程主机文件写入失败:Shell脚本SSH执行函数异常排查与解决

SSH执行含特殊字符命令失效的解决方法

初始实现的SSH函数

我编写了一个可在本地或远程主机执行任意命令的ssh_function函数:

## The ssh connection function
ssh_function(){
    local IP="$1"
    local COMMAND="$2"
    local STATUS

    if [[ $IP == $(hostname -i) ]]
    then
        STATUS=$(${COMMAND} 2>/dev/null)
    else
        STATUS=$(ssh -o "StrictHostKeyChecking no" -i $KEY_PATH root@"$IP" ${COMMAND} 2>/dev/null) 
    fi

    echo "$STATUS"
}

遇到的问题

当执行带>>、引号的命令(如向远程主机文件追加字符串的echo命令、sed命令)时,函数仅打印命令内容,并未执行实际操作;但执行简单命令(如apt安装命令)却正常。

尝试的局限性方案

我曾修改函数为仅支持>>操作的ssh_function3,虽能工作但局限性大。

最终解决方案:使用eval命令

最终通过在函数中使用eval命令解决了问题:

## The ssh connection function
ssh_function(){
    local IP="$1"
    local COMMAND="$2"

    if [[ $IP == $(hostname -i) ]]
    then
        eval "${COMMAND} 2>/dev/null"
    else
        eval "ssh -o "StrictHostKeyChecking no" -i $KEY_PATH root@"$IP" ${COMMAND} 2>/dev/null"
    fi
}

内容的提问来源于stack exchange,提问作者Ilya Shmadchenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 01:21:00