- 计算机程序只不过是磁盘中可执行的二进制(或去他类型)的数据
- 进程(有时被称为重量级进程)是程序的一次执行
- 每个进程都有自己的地址空间、内存以及其它记录其运行轨迹的辅助数据(称之为上下文 context)
- 操作系统管理在其上运行的所有进程,并为这些进程公平分配时间(CPU)
- 线程(有时被称为轻量级进程)跟进程有些类似,不同的是所有线程运行在同一个进程中,共享相同的运行环境
- 一个进程中的各个线程之间共享同一片数据空间,所以线程之间可以比进程之间更方便的共享数据以及相互通讯
概念
使用
import time,threading
def banzhuan(count):
print('start...%s'% count)
print("banzhuaning~~~")
time.sleep(3)
print('end...')
# 多线程
for i in range(3): # target: 执行目标函数
t = threading.Thread(target=banzhuan,args=(i,)) #创建新线程
t.start() #启动工作线程,会运行target()
# 单线程
# for i in range(3):
# banzhuan() #串行
练习 1:扫描存活主机
需求:
分析:
# 练习 1:扫描存活主机
# 需求:
# 通过 ping 测试主机是否可达 def ping(host):
# 如果 ping 不通,不管什么原因都认为主机不可用 ping -c 2 xxx &> /dev/null
# ping通: xx:up ping 不通 xx:down
import subprocess,threading
def ping(host):
dc = subprocess.run("ping -c 2 %s &> /dev/null"%host, shell=True)
if dc.returncode == 0:
print("%s: up" % host)
else:
print("%s: down" % host)
ips = [
"www.baidu.com", "www.163.com", "www.tmooc.cn",
"www.baidu.com", "www.163.com", "www.tmooc.cn",
"www.baidu.com", "www.163.com", "www.tmooc.cn"
]
for ip in ips: # 多线程
t = threading.Thread(target=ping, args=(ip,)) # 创建线程,给函数传参
t.start()
# for ip in ips: # 单线程
# ping(ip)
rpm -q postfix || yum -y install postfix
yum -y install mailx
systemctl start postfix
netstat -utnlp | grep :25
vim /etc/hosts # 把自己的主机名和127地址绑定
127.0.0.1 xxx localhost
:wq!
标准邮件需要三个头部信息
Python SMTP 对象使用 sendmail 方法发送邮件
sendmail 方法三个必须的参数有:
将准备好的邮件发送
[root@localhost xxx]# useradd bob # 创建接收邮件的用户bob和alice
[root@localhost xxx]# useradd alice
[root@localhost xxx]# mail -u bob # 查看用户bob的邮件,成功
[root@localhost xxx]# mail -u alice
# local_mail.py,使用本机的root用户,发送邮件给bob和alice用户
from email.mime.text import MIMEText # 导入邮件主体内容的类
from email.header import Header # 导入邮件头部信息的类
import smtplib # 导入发送邮件的模块
msg = MIMEText('python 本地邮件测试\n', 'plain', 'utf8') # 定义文件的内容;'plain' 表示纯文本【类似vim 编写的文件】,富文本【包含图片,字体颜色等】,文本类型为'utf8'
msg['From'] = Header('发送者', 'utf8') # 声明邮件的发件人,类型为'utf8'
msg['To'] = Header('接收者们', 'utf8') # 声明接收邮件方,类型为'utf8'
msg['Subject'] = Header('py test', 'utf8') # 声明邮件的主题【标题】
smtp = smtplib.SMTP('127.0.0.1') # 创建对象,声明发送邮件的服务器
sender = 'root' # 声明发送邮件的用户
receivers = ['bob', 'alice'] # 声明接收邮件的用户,发送邮件给多个用户,用列表表示
# 从当前本机的邮件服务器上,发送邮件,指定发件人,接收方,发送的邮件【包含邮件主体,发件人,收件人,邮件标题】
# msg.as_bytes() 指定以字节的方式发送邮件
smtp.sendmail(sender, receivers, msg.as_bytes())
下载 pip 模块
安装
上传 paramiko-2.7.2.tar.gz 到 pycharm 主机
[root@localhost ~]# tar tar xf paramiko-2.7.2.tar.gz # 解压pip压缩包
[root@localhost ~]# cd paramiko-2.7.2/ # 进入到paramiko解压目录下
[root@localhost paramiko-2.7.2]# python3 setup.py install # 安装paramiko
[root@localhost paramiko-2.7.2]# pip3 list |grep -i paramiko # 查看paramiko的版本
使用国内镜像站点
[root@localhost xxx]# mkdir ~/.pip #在root家目录下,创建隐藏目录.pip
[root@localhost xxx]# vim ~/.pip/pip.conf #创建,配置国内镜像源,index-url 指定国内镜像源路径,trusted-host 信任该镜像网站,否则无法使用
[global]
index-url=https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
安装
使用pip尝试安装paramiko,可以看到配置的国内镜像站点
[root@localhost xxx]# pip3 install paramiko