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

Paramiko exec_command执行mv命令在RHEL 7.9上报找不到文件错误排查

问题排查解决思路
  • 先校验路径拼写是否正确
    你提供的代码中源文件路径为 /tmp/filname.txt(缺失字母e),但报错信息中显示的源文件路径为 /tmp/filename.txt,先确认是代码笔误还是真实拼写错误,如果是代码拼写错误直接修正即可。
  • 验证路径与文件真实存在性
    手动登录到问题RHEL 7.9服务器,分别执行以下命令确认路径有效性:
    # 确认目标目录存在
    ls -ld /etc/somedir
    # 确认源文件存在
    ls -l /tmp/filename.txt
    
    同时确认你使用的SSH用户在未提权时就有权限读取这两个路径,避免路径被权限拦截导致判断为不存在。
  • 排查sudo执行环境问题
    RHEL 7.9默认的sudo配置通常开启了requiretty限制,要求sudo必须运行在终端环境下,Paramiko默认的exec_command不会分配伪终端,会导致sudo执行异常。修改代码添加get_pty=True参数即可:
    stdin, stdout, stderr = client.exec_command(f'sudo mv /tmp/filename.txt {dirpath}/filename.txt', get_pty=True)
    
    同时手动执行sudo mv /tmp/filename.txt /etc/somedir/filename.txt验证该SSH用户是否配置了无密码sudo权限,以及sudoers配置是否限制了可执行命令的路径范围。
  • 排查安全规则限制问题
    RHEL 7.9默认开启SELinux,可能会限制/tmp目录下的文件移动到/etc目录。临时关闭SELinux测试:
    setenforce 0
    
    如果测试可正常执行,说明是SELinux规则拦截,给对应文件添加允许移动的SELinux规则即可。
  • 排查路径变量隐藏字符问题
    打印repr(dirpath)确认变量中是否包含看不见的换行、空格、特殊字符,避免实际拼接的路径和预期不一致。

内容的提问来源于stack exchange,提问作者Pratik Potdar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:15:01