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

读取文件主机名用Paramiko连接失败,直接传入可正常连接

解决Paramiko遍历主机文件连接时的socket.gaierror问题

嗨,我刚碰到过一模一样的问题!你这个socket.gaierror: [Error -2] Name or service unknown报错的根源其实很简单——读取文件时每行末尾带了换行符。

你看,当用for line in f遍历文件内容时,每一行的末尾都会保留换行符(\n)。比如你hosts.txt里的test-r-1,读出来的line实际是'test-r-1\n',带着这个换行符的字符串作为主机名去DNS解析,系统当然找不到对应的服务,自然报错。而你直接写"test-r-1"的时候,这个字符串是没有换行符的,所以解析完全正常。

解决方案

只需要在使用每行内容前,去掉首尾的空白字符(包括换行符)就行,用Python的strip()方法就可以搞定:

with open("hosts.txt", "r") as f:
    for line in f:
        # 去掉换行符和首尾多余空白
        hostname = line.strip()
        # 跳过空行,避免无效连接尝试
        if hostname:
            remote_conn.connect(hostname, username=username, password=password, look_for_keys=False, allow_agent=False)

如果你担心strip()会误删主机名前后的合法空格(不过一般主机名不会有空格),也可以只去掉换行符:

hostname = line.rstrip('\n')

这样修改后,遍历文件里的主机名就和你直接写字符串的效果完全一样了,应该就能正常连接啦!

内容的提问来源于stack exchange,提问作者Stanford Hazlebruth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:46:51