用python脚本简单测试局域网中的电脑是否连接通畅

上一篇 / 下一篇  2016-04-28 15:01:19 / 个人分类:python

简单测试局域网中的电脑是否连接通畅?电脑ip的范围从192.168.0.101到192.168.0.200:

解决思路:用shell编程(linux是bash而windows是批处理脚本):例如:在windows上用ping ip的命令依次测试各个机器并得到控制台输出,由于ping通的时候控制台文本通常事“reply from。。”而不通的时候文本是“time out...”,所以,在结果中进行字符串查找,即可知道机器是否连通:

java实现:
String cmd='cmd.exe ping';
String ipprefix='192.168.10.';
int begin =101;
int end =200;
Process p =null; //声明一个进程

for(int i=begin;i<end;i++){
    p=Runtime.getRuntime().exec(cmd+i);  //初始化一个进程
    String line=null;
    BufferedReader reader=new BuffrReader(new InputStreamReader(p.getInputStream()));
    while((line=reader.readline())!=null)
    {
     这里面的思路是:拿到什么区和文本比对,是rely的就是通了,而time out的就是不通
     if line=''
      
    }
    reader.close();
    p.destroy();
}

这段代码弄完了,但是为了去运行这个代码,还需要做些额外的工作
编写一个类文件
编写一个main方法
编译字节码
字节码不能直接运行,写个bat或者bash去运行

python的实现:
import subprocess

cmd ='cmd.exe'
begin=101
end=200
while begin<end:
p=subprocess.Popen(cmd,shell=True,stout=subprocess.PIPE,stdin=subprocess.PIPE,stderr=subprocess.PIPE)
p.stdin.write('ping 192.168.1.'+str(begin)+'\n')

p.stdin.close()
p.wait()

print'execution result:%s'%p.stout.read()

可以看到对比java,python的实现更简洁,不需要写main函数,程序保存了可以直接使用
比如:在操作本地文件时,我只需要一行代码,而不是java的许多包装流类,使用python去处理一些简短程序类似与操作系统的交互编程最有用

TAG: Python python 电脑 局域网

 

评分:0

我来说两句

Open Toolbar