Python查看远程主机端口是否开放以及BashShell实现

无论是选择Python还是选择Bash Shell都可以很容易检测远程主机端口是否开放,下面的Python例子纯属锦上添花,仅供参考!

源码可参见Github:https://raw.githubusercontent.com/DingGuodong/LinuxBashShellScriptForOps/master/functions/net/tcp/port/checkRemoteHostPortStatus.py

使用方法:如果用户使用不带参数的方式执行,则需要用户修改Python脚本参数host和port,如果用户使用带参数的方式执行则需要加host和port默认用空格隔开或者参考usage()函数。

源码如下:

#!/usr/bin/python
# encoding: utf-8
# -*- coding: utf8 -*-
import socket
import sys
# import os
import time

def usage():
    print("""
    Function: check remote host‘s tcp port if is open
    Usage: %s <host ipaddress> <tcp port>
    Example: python %s 127.0.0.1 22
    Others useful cli:
    strace time:
        strace -q -f -c python checkRemoteHostPortStatus.py 127.0.0.1 22
    Bash shell implement:
        nc -w 3 127.0.0.1 22 >/dev/null 2>&1 && echo ok || echo failed
        nmap 127.0.0.1 -p 22 | grep open >/dev/null 2>&1 && echo ok || echo failed

""") % (__file__, sys.argv[0])
    sys.exit(0)

host = ""
port = 0
timeout = 3
retry = 3

argc = len(sys.argv)
if not (argc == 1 or argc == 3):
    print("Error: incorrect number of arguments or unrecognized option")
    usage()
if argc == 1:
    pass
else:
    if sys.argv[1] is not None:
        host = sys.argv[1]

    if sys.argv[2] is not None:
        port = sys.argv[2]

if host == "":
    print "host is empty, please sign new one."
    sys.exit(1)
if port == 0:
    print "port is empty, please sign new one."
    sys.exit(1)
else:
    try:
        type(int(port)) is not int
    except ValueError:
        print type(port)
        print "type port \"%s\" is not int, please sign new one" % port
        sys.exit(1)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(timeout)

for attempt in range(0, retry):
    try:
        s.connect((str(host), int(port)))
        print "connect to server %s port %s successfully!" % (host, port)
        break
    except Exception:
        print "connect to server %s port %s failed in %s times! " % (host, port, attempt + 1)
        # os.system("sleep 1")
        time.sleep(1)

s.close()

tag:python,检测端口,远程端口

--end--

时间: 06-03

Python查看远程主机端口是否开放以及BashShell实现的相关文章

远程批量查看windosws操作系统3389端口的开放情况

本文只提供思想.具体可以根椐情况拓展. 前提是需要配置远程主机的SNMP协议.主要是共同体哟. 脚本使用: 1.拷贝check_tcp到脚本执行的主机中或在此主机中安装nagios; 2.保持list.txt中只有一个IP列 脚本下载地址:http://download.csdn.net/detail/drew27/7456955(不需要积分) 1 #!/bin/bash 2 cat list.txt | while read line3 do4 p3389=`/usr/local/nagios

【Linux基础】查看某一端口是否开放(1025为例)

1.使用lsof 命令来查看端口是否开放 lsof -i:1025 //如果有显示说明已经开放了,如果没有显示说明没有开放 lsof(list open files)是一个列出当前系统打开文件的工具. 在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能. 2.使用netstat 命令来查看端口是否开放 //查看是否监听在0.0.0.0:1

Linux中的nc测试端口是否开放

nc测试端口是否开放 在Linux中有一个级强大的网络工具netcat,在默认情况下面都是没有安装的,现在介绍一下安装过程 其实安装很简单 一.安装使用 1.只需输入命令yum安装: [[email protected] ~]# yum install -y nc [[email protected] ~]# yum install -y nc Loaded plugins: fastestmirror, refresh-packagekit, security Setting up Insta

用Python实现一个端口扫描,只需简单几步就好

一.常见端口扫描的原理 0.秘密扫描 秘密扫描是一种不被审计工具所检测的扫描技术. 它通常用于在通过普通的防火墙或路由器的筛选(filtering)时隐藏自己. 秘密扫描能躲避IDS.防火墙.包过滤器和日志审计,从而获取目标端口的开放或关闭的信息.由于没有包含TCP 3次握手协议的任何部分,所以无法被记录下来,比半连接扫描更为隐蔽. 但是这种扫描的缺点是扫描结果的不可靠性会增加,而且扫描主机也需要自己构造IP包.现有的秘密扫描有TCP FIN扫描.TCP ACK扫描.NULL扫描.XMAS扫描和

查看网络端口被占用情况netstat命令

在windows命令行窗口下执行: C:\>netstat -aon|findstr "80" TCP     127.0.0.1:80         0.0.0.0:0               LISTENING       2448 看到了吗,端口被进程号为2448的进程占用,继续执行下面命令: C:\>tasklist|findstr "2448" thread.exe                     2016 Console    

只有小于65535端口编程可以用,查看哪些端口被打开netstat -anp,nc命令,nmap命令

1024以下是系统保留的,从1024-65535是用户使用的 个人写的应用程序,尽量不要使用0到1024之间的端口号. 1024到65535我们编程可以用.这个不是Linux规定的,是socket规定的. 1.0~1023,这些端口有IANA分配和控制,可能的话,相同端口号就分配给TCP.UDP和SCTP的同一给定服务.如80端口被赋予web服务 2.1024~49151,这些端口不受IANA控制,不过由IANA登记并提供他们的使用情况清单,已方便整个群体.相同端口号也分配给TCP和UDP的同一

查看80端口占用

开始 ->cmd ->   netstat -nao | find "LISTEN" | find ":80" 找到进程,在看服务停止就能打开iis了 另一个程序正在使用此文件,进程无法访问”的解决方法 启动IIS时提示“另一个程序正在使用此文件,进程无法访问.(异常来自HRESULT:0x80070020)” (the process cannot access the file because it is being used by process.

查看Windows端口及端口关闭方法

一.查看已开放的端口: 1.借助系统自带MS-DOS命令查看开放的端口(Win2000/XP/server2003) 在开始-运行-输入cmd,打入netstat -an(注意-前有个小空格),在IP地址“,”后面就是端口号了.(-a表示显示当前所有连接和侦听端口,-n表示以数字格式显示地址和端口号) 小常识:TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据包协议)都是网络上传输数据的通信协议,UD

Linux下iptables 禁止端口和开放端口

iptables 禁止端口和开放端口 1.首先介绍一下指令和相关配置文件 启动指令:service iptables start 重启指令:service iptables restart 关闭指令:service iptables stop 然后是相关配置:/etc/sysconfig/iptables 如何操作该配置呢? vim /etc/sysconfig/iptables 然后进去修改即可,修改完了怎么办?这里很多人会想到/etc/rc.d/init.d/iptables save指令,