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

 

posted @ 2018-06-23 10:43  番茄土豆西红柿  阅读(127)  评论(0)    收藏  举报
TOP