61 - 发布功能知识点预热
1. python执行shell命令
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import subprocess
import commands
result = subprocess.check_output('ls', cwd='/Users/wupeiqi/PycharmProjects', shell=True) # 指定shell=True后,命令中可以有空格,比如 ls -ld
print(result, type(result))
print(result.decode('utf-8'))
ret = commands.getoutput("pgrep -f python") # commands无法指定cwd print(ret)
课堂笔记
2. 解压缩文件
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import shutil
# 文件压缩
"""
ret = shutil.make_archive(
base_name="/Users/wupeiqi/PycharmProjects/deploy27/前戏/wwwwwwwwww",
format='gztar', # “zip”, “tar”, “bztar”,“gztar”
root_dir='/Users/wupeiqi/PycharmProjects/deploy27/deploy' # 要压缩的文件内容
)
print(ret)
"""
# 文件解压
import tarfile
import zipfile
# shutil._unpack_zipfile(file.stream, upload_path) # 这个再python3中才支持
"""
tar = tarfile.open('/Users/wupeiqi/PycharmProjects/deploy27/前戏/wwwwwwwwww.tar.gz', 'r')
tar.extractall(path='/Users/wupeiqi/PycharmProjects/deploy27/前戏/dp/') # 可设置解压地址
tar.close()
import zipfile
import tarfile
obj = zipfile.ZipFile(r'D:\m1\day07\x1.zip',mode='r')
obj.extractall(r'D:\m1\day07\files')
obj.close()
"""
课堂笔记
3. 遍历文件夹下的所有文件
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import os
for item in os.listdir('/Users/wupeiqi/PycharmProjects/deploy27/deploy'):
print(item)
for item in os.walk('/Users/wupeiqi/PycharmProjects/deploy27/deploy'):
print(item)
import os
for li in os.listdir(r'D:\m1\day07\files'):
print(li)
for base,folder,files in os.walk(r'D:\m1\day07\files'):
for item in files:
file_path = os.path.join(base,item)
print(file_path)
4. 重命名和删除
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import shutil
# shutil.move('/Users/wupeiqi/PycharmProjects/deploy27/deploy1','/Users/wupeiqi/PycharmProjects/deploy27/deploy')
# shutil.rmtree('/Users/wupeiqi/PycharmProjects/deploy27/t')
5. 杀进程
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import os
import signal
import subprocess
import commands
output = subprocess.check_output("pgrep -f python", shell=True)
pid_list = map(int, output.split())
for pid in pid_list:
os.kill(pid, signal.SIGKILL)
6. salt推送文件
备注:salt master*minnon模式,发送文件的时候:把命令通过zeromq发送给客户端,然后客户端来执行命令
#!/usr/bin/env python # -*- coding:utf-8 -*- """ SaltAPI推送文件 """ # #### 基于SSH:API #### """ from salt.client.ssh.client import SSHClient client = SSHClient() # 执行命令 # result = client.cmd('*', 'cmd.run', ('ls',)) # 调用grains # ret = client.cmd('*','grains.items') # 调用pillar # ret = client.cmd('*','pillar.items') # 执行 state # ret = client.cmd('*','state.sls',('fengfeng','pillar={"xxxx":"luffy"}')) # 发送文件 # ret = client.cmd('*','cp.get_file',('salt://fengfeng/files/test.conf','/data/s1.conf')) # 发送文件 # ret = client.cmd('*','cp.get_url',('http://www.pythonav.com/allstatic/imgs/mv/picture/2.jpeg','/data/s1.jpeg'))
# 源码 vim client/ssh/shell.py """ # #### 基于Master:API #### """ import salt.client local = salt.client.LocalClient() # 执行命令 # result = client.cmd('*', 'cmd.run', ('ls',)) # 调用grains # ret = client.cmd('*','grains.items') # 调用pillar # ret = client.cmd('*','pillar.items') # 执行 state # ret = client.cmd('*','state.sls',('fengfeng','pillar={"xxxx":"luffy"}')) # 发送文件 # ret = client.cmd('*','cp.get_file',('salt://fengfeng/files/test.conf','/data/s1.conf')) # 发送文件 # ret = client.cmd('*','cp.get_url',('http://www.pythonav.com/allstatic/imgs/mv/picture/2.jpeg','/data/s1.jpeg'))
# 源码:vim module/cp.py """
参考:
https://www.cnblogs.com/wupeiqi/articles/9213320.html
做有积累的事~~

浙公网安备 33010602011771号