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

如何在Python中从命令输出文本提取session_timeout对应数值

问题分析与解决

你的Python代码存在几个明显问题,导致无法正确获取session_timeout值:

  1. 命令字符串语法错误:原代码里的命令未用引号包裹,format(ip)的调用位置也不对,导致命令格式混乱无法执行。
  2. 错误调用out.read():subprocess.check_output()在设置universal_newlines=True时,直接返回字符串而非文件对象,调用read()会触发AttributeError。
  3. grep匹配内容有多余空格:你写的session_ timeout包含两个空格,但实际输出是session_timeout,会导致grep匹配不到目标行。

修正后的代码
import subprocess

ip = "你的目标IP地址"  # 替换为实际目标IP
try:
    # 用f-string拼接正确的命令,grep匹配准确关键词
    cmd = f"ssh -o StrictHostKeyChecking=no {ip} sudo /var/application/mycommand | grep 'session_timeout'"
    # 执行命令并获取输出字符串
    out = subprocess.check_output(
        cmd,
        stderr=subprocess.STDOUT,
        shell=True,
        universal_newlines=True
    ).strip()
    
    # 遍历输出行,提取session_timeout的数值
    for line in out.split('\n'):
        if 'session_timeout:' in line:
            timeout_value = line.split(':')[1].strip()
            print(f"session_timeout值:{timeout_value}")
            break
except subprocess.CalledProcessError as e:
    print(f"命令执行出错:{e.output}")

代码说明
  • 用f-string拼接命令,确保IP被正确替换,同时让grep匹配准确的session_timeout关键词,避免空格导致的匹配失败。
  • 直接使用check_output返回的字符串结果,无需额外调用read()。
  • 通过遍历输出行定位目标内容,再用字符串分割提取具体数值。
  • 添加异常捕获,处理SSH连接失败、sudo权限不足等命令执行错误的情况。

内容的提问来源于stack exchange,提问作者S Bill Trader

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 22:23:12