python脚本验证服务器端口连通性
场景
在给客户公司部署服务的时候,可能由于他们网络策略的原因,需要到服务器内验证当前服务器是否可以访问另一条服务器的某个端口
如果服务器里有 telnet、nc,那就没什么问题,它们都可以用来测试连通性,但是有些客户提供的服务器没有这些命令,也不允许联网安装,这种情况下很难验证
但是 linux 服务器内都会内置有 python,所以我们可以写一个 python 脚本来测试,下面针对 python2 和 python3 都提供了一个脚本
脚本
python2 脚本
nettest.py
import socket
import sys
def test_mysql_connection(host, port):
    try:
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.settimeout(2)
        result = sock.connect_ex((host, port))
        if result == 0:
            print "success %s:%d" % (host, port)
        else:
            print "fail %s:%d" % (host, port)
        sock.close()
    except socket.error as e:
        print "error: %s" % e
if "__main__" == __name__:
    if len(sys.argv) != 3:
        print "usage: python script.py <host> <port>"
        sys.exit(1)
    host = sys.argv[1]
    try:
        port = int(sys.argv[2])
    except ValueError:
        print "port must integer"
        sys.exit(1)
    test_mysql_connection(host, port)
使用
python nettest.py 10.0.12.11 3306
python3 脚本
import socket
import sys
def test_mysql_connection(host, port):
    try:
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.settimeout(2)
        result = sock.connect_ex((host, port))
        if result == 0:
            print(f"success {host}:{port}")
        else:
            print(f"fail {host}:{port}")
        sock.close()
    except socket.error as e:
        print(f"error: {e}")
if __name__ == "__main__":
    if len(sys.argv) != 3:
        print("usage: python script.py <host> <port>")
        sys.exit(1)
    host = sys.argv[1]
    try:
        port = int(sys.argv[2])
    except ValueError:
        print("port must be an integer")
        sys.exit(1)
    test_mysql_connection(host, port)
使用
python nettest.py 10.0.12.11 3306
            本文是原创文章,采用 CC 4.0 BY-SA 协议,完整转载请注明来自 KK元空间
        
     评论
            
                
                隐私政策
            
            
                你无需删除空行,直接评论以获取最佳展示效果
            
        