python测试某个网段IP存活、单端口是否开启、是否能ssh

这个脚本是为了在一个网段监测主机是否存活,22端口是否开启,并通过统一的用户名和密码是否能成功ssh登录,并将可以登录的主机IP记录到文件中。

不足之处就是这么判断不知是否可以准确测试ssh登录,还有就是一个个ping地址实在是速度太慢了,不过还好有时间写个多线程应该就快多了。

代码如下:

#!/usr/bin/python
# -*- coding:utf-8 -*-
import os
import subprocess
import re
import socket
import paramiko

user = ‘root‘
passwd = ‘123456‘

def ip(file,field):
        ip_field = field
        ip_file = open(file,‘w‘)
        for i in range(1,256):
                ip = ‘%s%s\n‘ % (ip_field,i)
                ip_file.write(ip)
        ip_file.close()

def test_ip(file):
        file = open(file,‘r‘)
        ip_list = []
        port = 22
        f = open(‘login_ip.txt‘,‘w‘)
        for line in file.readlines():
                line=line.strip(‘\n‘)
                ip_list.append(line)
        for ip in ip_list:
                p = subprocess.Popen(["ping -c 1 "+ ip],
                            stdin = subprocess.PIPE,
                            stdout = subprocess.PIPE,
                            stderr = subprocess.PIPE,
                            shell = True)
                out = p.stdout.read()
                regex = re.compile("time=\d*", re.IGNORECASE | re.MULTILINE)
                if len(regex.findall(out)) > 0:
                        print ip + ‘: Host Up!‘
                        s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
                        try:
                                s.connect((ip,int(port)))
                                s.shutdown(2)
                                print ‘%d is open‘ % port
                                try:
                                        ssh = paramiko.SSHClient()
                                        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
                                        ssh.connect(ip,22,user, passwd)
                                        #stdin, stdout, stderr = ssh.exec_command("你的命令")
                                        #print stdout.readlines()
                                        ssh.close()
                                        print ‘Login successful‘
                        #               f = open(‘login_ip.txt‘,‘w‘)
                                        ip = ‘%s\n‘ % ip
                                        f.write(ip)
                #               return True
                                except:
                                        print ‘The login problem, please check your username and password‘
                        except:
                                print ‘%d is down‘ % port
                #               return False
                else:
                        print ip + ‘: Host Down!‘
        file.close()
        f.close()
ip(‘test‘,‘192.168.209.‘)
test_ip(‘test‘)
时间: 2024-10-06 11:46:36

python测试某个网段IP存活、单端口是否开启、是否能ssh的相关文章

python 检测某网段已用ip和未使用的ip

借鉴了前辈的博客,然后自己加了很多东西. 其中用到了subprocess模块 >>> import subprocess >>> p = subprocess.Popen('df -h',stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True) #获取命令执行结果的返回码,通过wait()函数 >>> p.wait() 0 #获取命令输出结果(标准输出

Python学习之——Tcp/ip基础/IP地址/DNS/端口简介

一.为什么需要tcp/ip,什么是tcp/ip? TCP/IP协议,即Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议.Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成.TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准.协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求.通俗

Python获取网络中的存活主机以及哪些主机是Linux

这个脚本用于扫描网络中的存活主机,通常在CMDB中自动获取主机的时候用到. #!/usr/bin/env python # -*- coding: utf-8 -*- """ 执行这个脚本的主机要安装下面两个模块 pip3 install python-nmap 这个Python模块依赖操作系统的nmap 确保操作系统安装了nmap yum -y install nmap # for centos 主要功能:扫描网段获取存活主机以及主机是否为Linux.不是Linux的被标记

docker容器端口IP规划及端口动态扩容

docker容器一旦启动,参数就无法改变,生产环境中最常变的就是端口映射,为了解决这个问题,那么首先就要规划好,本文列出了两种端口规划方案,如果后续维护中出现了要增加端口映射的场景,本文也给出了动态端口映射扩容方案. 1.单IP多容器映射规划方案 此种环境适用只有单个IP环境下,如云主机等. 1.1 端口映射规划表格:     规划不同的端口段,映射到容器从而对外提供服务. 主机名称 ssh映射 mysql映射 nginx映射 redis映射 redis-test 51000 22 51001

Python骚操作!利用Python来爬取IP代理!偷偷给文章刷阅读量!

二.代码 代码直接参考了下文,更多解读参见原文,其中将ip提取部分修改了下,并将用来测试IP是否可用的百度url改成了CSDN博客里文章的url. 进群:548377875   即可获取数十套PDF哦! 另外也试了下豆瓣......嗯,立马就"403",上不去了,所以看了本文想刷其他网站数据的朋友,还是三思而行,如果账号被封,概不负责哦.==. 代码(py3.5版本):源码奉上! # coding: utf-8 import urllib.request import urllib.p

设置IIS服务器监听特定IP的特定端口(IIS与IHS或Apache共存的解决方案)

在灾难恢复的试验中,遇到了一个IIS无法启动的情况,会报如下的错误: "The network location cannot be reached, xxxxxx" 要知道,Windows报的这种弹窗错误,也只能通过Windows自带的事件管理器里查看了.直接运行:eventvwr,打开SYSTEM项,一个大大的错误映入眼帘: 所以错误就很明显了,没有把我们的新地址添加到监听列表里... 根据搜索,发现仅仅用IIS的图形界面工具,似乎无法让IIS去监听某一个IP地址的某个端口,必须要

程序内执行shell命令自动获取局域网内所有在线IP和开放端口(Linux)

前言 题目说的有点长,其实就是以下几件事,第一是让Shell命令可以在程序内执行,然后将执行结果传递给变量,从而可以进行后续的事务处理,第二是使用nmap命令获取当前局域网内所有在线IP和开放的端口,最后就是对nmap获得的结果进行处理,得到只有IP和端口的结果. Linux命令行的强大功能相信使用Linux的人都知道,一个命令等于你在windows用几百行甚至上千行的代码量才能实现,所以,如果很好的利用shell命令,可以说是事半功倍. 而要充分利用shell的结果,必然是需要获得可以处理的命

使用python测试sphinx(coreseek)做全文索引

coreseek是一个基础sphinx的中文索引工具,我今天写一下关于使用python做测试的方式. coreseek安装,连接mysql的配置此处不赘述,很多人写过这方面的博客,单纯讲python连接sphinx.当然我们先启动sphinx进程,./searched python要连接sphinx肯定是需要第三方库的,你可以去pypi找,当然sphinx已经告诉我们了,我们去/home/lpj/soft/coreseek-3.2.14/csft-3.2.14/api (我下载的coreseek

python例子-Nmap扫描IP并更新

# (1).将111.206.217.0/24.218.75.110.0/24两个网段IP地址插入proxy.nmap_ip表中,type字段按照个人序号插入. def readIpByAddr(): ip_list= [] for i in range(255): i = '111.206.217.%s' % i j = '218.75.110.%s' % i ip_list.append(i) ip_list.append(j) return ip_list def readIpByFile