网络 - 测试连接性 [Python 或 C]

1 投票
2 回答
912 浏览
提问于 2025-04-16 00:28

假设我想检查一下我的FTP服务器是否在线,我该怎么在程序里实现呢?你觉得最简单、最不打扰的方法是什么?

2 个回答

2

我个人会先试试 nmap 来完成这个任务,http://nmap.org

nmap $HOSTNAME -p 21

在 Python 中测试一系列服务器的 21 号端口(ftp)可能会像这样:

#!/usr/bin/env python  
from socket import *   

host_list=['localhost', 'stackoverflow.com']

port=21 # (FTP port)

def test_port(ip_address, port, timeout=3):
    s = socket(AF_INET, SOCK_STREAM)
    s.settimeout(timeout)
    result = s.connect_ex((ip_address, port))
    s.close()
    if(result == 0):
        return True
    else:
        return False

for host in host_list:
    if test_port(gethostbyname(host), port):
        print 'Successfully connected to',
    else:
        print 'Failed to connect to',
    print '%s on port %d' % (host, port)
1

连接到你的FTP服务器的端口,看看它是否能接受连接。

如果你想更进一步,可以发送一个ls命令,检查一下是否能得到合理的回应。

如果你想用Python来做这件事,可以使用ftplib这个库。

撰写回答