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

如何在Python中通过SSH连接从远程主机发送GET请求?

问题解决:通过Paramiko在远程主机执行GET请求

错误原因分析

你写的代码存在两个关键问题:

  • 直接把目标URL作为命令传给exec_command,但远程主机需要执行的是curl命令,不是直接输入URL。
  • 错误调用了command.request("GET", '/'),字符串对象没有request方法,这行代码会直接触发报错。

修正后的代码

import paramiko

username = 'root'
hostname = '175.111.0.26'
port = 22
password='password'  # 注意原代码里的拼写错误:passowrd -> password

def do_it():
    s = paramiko.SSHClient()
    # 自动处理未知主机密钥(生产环境建议手动配置主机密钥,更安全)
    s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    s.connect(hostname, port, username, password)
    
    # 构造和CMD环境中完全一致的curl命令
    curl_command = 'curl -X GET "https://bsms.its.com.pk/otpsms.php?key=xxx&receiver=number&sender=xxxx&param1=xxx&otpcode=1234"'
    # 执行命令并获取输出流
    stdin, stdout, stderr = s.exec_command(curl_command)
    
    # 打印执行结果,方便排查问题
    print("命令输出:", stdout.read().decode())
    print("错误信息:", stderr.read().decode())
    
    s.close()

额外说明

  • 原代码中load_system_host_keys()如果本地未存储该远程主机的密钥,可能导致连接失败,添加set_missing_host_key_policy(paramiko.AutoAddPolicy())可自动处理该场景。
  • 执行命令后获取stdout和stderr的内容,能快速定位命令执行是否成功、是否存在报错。
  • 注意修正原代码里的密码拼写错误passowrd,改为正确的password。

内容的提问来源于stack exchange,提问作者Fouz Siddiqui

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 10:15:26