Linux7.3默认的python系统是2.7.5,然后想着升级使用python3.6.6

1 下载

2 解压  tar fx Python-3.6.6.tgz

3  configure --prefix=/usr/local/python3.6

4 make && make install

5 ln -s /usr/local/python3.6/bin/python3.6  /usr/bin/python3.6

说明:这里是让两个版本的python共存

下面的脚本成功执行的

# /usr/bin/env python3.6
# -*- coding: utf-8 -*- import time
import subprocess
import re
from concurrent.futures import ThreadPoolExecutor def ping_call(ip):
command = 'ping -c 2 -W 1 %s' % ip
print(command)
file = open('/dev/null', 'w')
result = subprocess.call(command,
shell=True, stdout=file, stderr=file)
print(result)
if result:
print('ip-address {} ping fail'.format(ip))
else:
print('ip-address {} ping ok'.format(ip))
success.append(ip.split('.')[-1])
file.close() if __name__ == '__main__':
network = input('please input network>>>').strip()
host = input('please input your host range>>>').strip().split()
a, b = host[0], host[1]
print(network.split('.'))
if len(network.split('.')) == 3 and a.isdigit() and b.isdigit() and re.match('\d{1,3}\.\d{1,3}\.\d{1,3}', network):
a, b = int(a), int(b)
pool = ThreadPoolExecutor(50)
start_time = time.time()
success = []
for i in range(a, b + 1):
ret = pool.submit(ping_call, network + "." + str(i))
pool.shutdown()
print("multi_Thread spend-time {:.2f}".format(time.time() - start_time))
print("passed host is: ")
print(success)

说明:但是始终有个问题:不能使用中文,使用中文就报错,百度多次,暂时不明原因

使用中文报错:

UnicodeEncodeError 'ascii' codec can't encode characters in position

找到问题根源了:输入和输出编码的问题

[root@centos7 ~]# python3.6
Python 3.6.6 (default, Sep 1 2018, 17:07:25)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.stdout.encoding
'ANSI_X3.4-1968'
>>> sys.stdin.encoding
'ANSI_X3.4-1968'
>>>

所以使用前加入PYTHONIOENCODING=utf-8

中文版:

# /usr/bin/env python3.6
# -*- coding: utf-8 -*- import time
import subprocess
import re
from concurrent.futures import ThreadPoolExecutor def ping_call(ip):
command = 'ping -c 2 -W 1 %s' % ip
print(command)
file = open('/dev/null', 'w')
result = subprocess.call(command,
shell=True, stdout=file, stderr=file)
print(result)
if result:
print('ip地址: {} ping fail'.format(ip))
else:
print('ip地址: {} ping ok'.format(ip))
success.append(ip.split('.')[-1])
file.close() if __name__ == '__main__':
network = input('请输入 网段>>>').strip()
host = input('请输入主机范围,空格隔开>>>').strip().split()
a, b = host[0], host[1]
print(network.split('.'))
if len(network.split('.')) == 3 and a.isdigit() and b.isdigit() and re.match('\d{1,3}\.\d{1,3}\.\d{1,3}', network):
a, b = int(a), int(b)
pool = ThreadPoolExecutor(50)
start_time = time.time()
success = []
for i in range(a, b + 1):
ret = pool.submit(ping_call, network + "." + str(i))
pool.shutdown()
print("multi_Thread spend-time {:.2f}".format(time.time() - start_time))
print("passed host is: ")
print(success)

执行:与python2的方式不一样

[root@centos7 ~]# PYTHONIOENCODING=utf-8 python3.6 ping_host3.6.py
请输入 网段>>>192.168.0
请输入主机范围,空格隔开>>>1 10
['', '', '']
ping -c 2 -W 1 192.168.0.1
ping -c 2 -W 1 192.168.0.2
0
ip地址: 192.168.0.1 ping ok
ping -c 2 -W 1 192.168.0.3
ping -c 2 -W 1 192.168.0.4
ping -c 2 -W 1 192.168.0.5
ping -c 2 -W 1 192.168.0.6
ping -c 2 -W 1 192.168.0.7
ping -c 2 -W 1 192.168.0.8
ping -c 2 -W 1 192.168.0.9
ping -c 2 -W 1 192.168.0.10
0
ip地址: 192.168.0.2 ping ok
1
ip地址: 192.168.0.3 ping fail
1
ip地址: 192.168.0.4 ping fail
1
ip地址: 192.168.0.5 ping fail
1
ip地址: 192.168.0.6 ping fail
1
ip地址: 192.168.0.7 ping fail
1
ip地址: 192.168.0.8 ping fail
1
ip地址: 192.168.0.9 ping fail
1
ip地址: 192.168.0.10 ping fail
multi_Thread spend-time 2.09
passed host is:
['', '']

最后去掉提示改为一行命令版

# /usr/bin/env python3.6
# -*- coding: utf-8 -*- import time
import subprocess
import re
import sys
import os
from concurrent.futures import ThreadPoolExecutor def ping_call(ip):
command = 'ping -c 2 -W 1 %s' % ip
print(command)
file = open('/dev/null', 'w')
result = subprocess.call(command,
shell=True, stdout=file, stderr=file)
if result:
print('ip地址: {} ping fail'.format(ip))
else:
print('ip地址: {} ping ok'.format(ip))
success.append(ip.split('.')[-1])
file.close() if __name__ == '__main__':
# network = input('请输入 网段>>>').strip()
network = sys.argv[1]
# host = input('请输入主机范围,空格隔开>>>').strip().split()
a, b = sys.argv[2], sys.argv[3]
print(network.split('.'))
if len(network.split('.')) == 3 and a.isdigit() and b.isdigit() and re.match('\d{1,3}\.\d{1,3}\.\d{1,3}', network):
a, b = int(a), int(b)
pool = ThreadPoolExecutor(50)
start_time = time.time()
success = []
for i in range(a, b + 1):
ret = pool.submit(ping_call, network + "." + str(i))
pool.shutdown()
print("花费的时间: {:.2f}".format(time.time() - start_time))
print("能ping通的主机有: ")
for i in success:
print(i, end='\t')
print()

Linux7.3系统 升级python到3.6使用ping主机脚本的更多相关文章

  1. 【Linux】CentOS下升级Python和Pip版本全自动化py脚本

    [Linux]CentOS下升级Python和Pip版本全自动化py脚本 CentOS7.6自带py2.7和py3.6 想要安装其它版本的话就要自己重新下载和编译py其它版本并且配置环境,主要是软链接 ...

  2. 升级 python 2.6.6 系统到 2.7.10 版本

    CentOS 6 系统默认 Python 版本是:2.6.6 平时在使用中遇到很多的库要求是 2.7.x 版本的库,比如使用 ConfigParser 库,在 2.6 版本库就不支持没有 value ...

  3. Linux系统下升级Python版本步骤(suse系统)

    Linux系统下升级Python版本步骤(suse系统) http://blog.csdn.net/lifengling1234/article/details/53536493

  4. linux centos系统下升级python版本

    本文参考资料:https://www.cnblogs.com/leon-zyl/p/8422699.html,https://blog.csdn.net/tpc1990519/article/deta ...

  5. CentOS6 系统下升级python后yum命令使用时报错

    CentOS6 系统下升级python后yum命令使用时报错,如下: [root@xxxxxxx]#yumFile"/usr/bin/yum",line30exceptKeyboa ...

  6. Linux 下编译升级 Python

    一.Centos下升级python3.4.3 1.下载安装 wget http://www.python.org/ftp/python/3.4.3/Python-3.4.3.tgz wget http ...

  7. CentOS 6.5升级Python和安装IPython

    <转自:http://www.noanylove.com/2014/10/centos-6-5-sheng-ji-python-he-an-zhuang-ipython/>自己常用.以做备 ...

  8. Linux下升级python版本

    转载自:http://lovebeyond.iteye.com/blog/1770476 CentOS下的Python版本一般都比较低,很多应用都需要升级python来完成.我装的centOS的默认的 ...

  9. CentOS 6.5升级Python后yum不可用的解决方案

    因开发需要,今天把CentOS 6.5自带的Python2.6.6升级到了Python2.7.3.按照如下步骤进行升级 1.查看当前系统python的版本 python -V 2.下载2.7.3版本的 ...

随机推荐

  1. HTML:meta标签使用总结 [转载] [360浏览器 指定极速模式]

    meta标签作用 META标签是HTML标记HEAD区的一个关键标签,提供文档字符集.使用语言.作者等基本信息,以及对关键词和网页等级的设定等,最大的作用是能够做搜索引擎优化(SEO). PS:便于搜 ...

  2. 基于redis 3.x搭建集群环境

    由于我团队开发的在线坐席系统,即将面对线上每周3000W的下行投放客户,产品的咨询量可能会很大,基于前期,200W的投放时,前10分钟,大概800问题量,平均一个客户大概8个问题,也就是说每分钟10个 ...

  3. 【java】标示符

    java的标示符由数字0-9,字母a-zA-Z,_$组成.(java是严格区分大小写的) 标示符的规则: 1.不能以数字开头 2.不能使用关键字 一般的命名规则: 包名:多个单词组成时,所有字母全部小 ...

  4. Visual Studio 2008(C#)XML注释提取成帮助文档的方法

    Visual Studio 2008(C#)XML注释提取成帮助文档的方法     1.给方法和类添加XML注释 可以手动添加,具体规则可以看MSDN:http://msdn.microsoft.co ...

  5. [转]阿里云CentOS 7.1使用yum安装MySql5.6.24

    阿里云CentOS 7.1使用yum安装MySql5.6.24 作者:vfhky | 时间:2015-06-25 09:43 | 分类:web 在前面两篇文章<2015博客升级记(四):Cent ...

  6. jQuery 事件绑定四种方式,delegate委托强大绑定在3.0中修改为on

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. MMU实验

    内存管理单元 MMU介绍:权限管理:地址映射 权限管理:内核->A->B 地址空间各不相同 地址映射:多任务系统也是分时系统 虚拟地址(地址空间)->MMU->物理地址 SDR ...

  8. Android 项目中的资源获取方法

    Android资源文件分类: Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.java里面自动生成该资源文件的ID,所以访问这种资源文件 ...

  9. c# .net WebRequest 始终报域名无法解析

    更改本机DNS,flushdns也没效果. 最后通过改.config 禁用代理后正常. (或:WebRequest.Proxy=null;)

  10. 四旋翼基础算法学习2-IMU输入滤波算法

    前言: 处理器读取陀螺仪加速度计数据后首先需要对数据进行滤波处理,此文分析比较几种常用的滤波算法. 参考学习:四轴加速度计滤波 IMU: IMU使用MPU9250(即MPU6500),设置加速度量程± ...