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

嵌套SSH单命令列目标服务器目录遇文件不存在错误求助

问题解决:嵌套SSH跳转后文件找不到的错误

错误原因

嵌套执行SSH命令时,*.arc通配符被server1的Shell提前解析展开,导致server2收到的是server1本地的具体文件名列表,而非通配符本身。server2上不存在这些文件,因此抛出"No such file or directory"错误;同时命令解析混乱,实际执行的仍是server1上的ls命令,所以输出结果和直接连server1时一致。

解决方案

方法1:使用SSH ProxyJump(推荐,OpenSSH 7.3+支持)

利用-J参数直接通过server1作为跳板连接server2,避免嵌套SSH的引号解析问题,命令直接在server2上执行:

ssh -J user@server1 user@server2 'ls -ltr /oracle/archive/server/*.arc --time-style=+"%d/%m/%Y %H:%M:%S" | awk '\''{gsub("/u01/archive/servidor/servidor_1_","");gsub("_123456789.arc","");print $8" - "$6" "$7}'\'' | sort -n | tail -5'

方法2:修复嵌套SSH的引号转义

如果必须使用嵌套SSH,需要给内层命令添加额外的引号转义,确保server1完整传递命令给server2,不提前解析通配符:

ssh user@server1 'ssh user@server2 '\''ls -ltr /oracle/archive/server/*.arc --time-style=+"%d/%m/%Y %H:%M:%S" | awk '\'''\'''\''{gsub("/u01/archive/servidor/servidor_1_","");gsub("_123456789.arc","");print $8" - "$6" "$7}'\'''\'''\'' | sort -n | tail -5'\'''

额外检查点

确认server2上的.arc文件路径前缀是否和awk命令中替换的/u01/archive/servidor/servidor_1_一致,如果server2上的文件路径不同,需要修改awk中的匹配字符串,确保能正确提取文件编号。

内容的提问来源于stack exchange,提问作者Diego Perotta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:35:18