15. 部署静态网站python脚本
1. 本地py脚本¶
cd jenkins-scripts
vim localtest.py
#!/usr/bin/python
import os, time
try:
os.system("hostname")
time.sleep(1)
os.system("echo 'success!'")
except:
print("Error")
测试结果¶
(env) root@4c16g:/jenkins-scripts# python localtest.py
4c16g
success!
分析了一下,只适合ssh远程登陆后执行,此脚本可以配合ansible使用,这样的话感觉多此一举了!
2. 远程操作py脚本¶
1. 安装paramiko包¶
# 10.0.8.5
cd jenkins-scripts
virtualenv env
source env/bin/activate
pip install paramiko
2. 测试¶
cd jenkins-scripts
vim test.py
#!/usr/bin/python
import paramiko
# 创建一个ssh模块
ssh = paramiko.SSHClient()
# 设置连接方式
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接远程主机 ip地址 ,端口号,用户名,密码(在远程你主机真实存在的)
ssh.connect("10.0.8.2", 22, "ubuntu", "123456")
# ssh.connect("ip地址", 端口号, "用户名", "密码")
# 标准输入文件、标准输出文件、标准错误文件
# 在Linux上执行命令,返回结果
stdin, stdout, stderr = ssh.exec_command("hostname")
# stdin, stdout, stderr = ssh.exec_command("ifconfig")
# 查看命令执行结果
print(stdout)
print(stdout.read().decode('utf8'))
# 释放资源
ssh.close()
3.执行结果¶
(env) root@4c16g:/jenkins-scripts# python test.py
<paramiko.ChannelFile from <paramiko.Channel 0 (open) window=2097152 -> <paramiko.Transport at 0x56071910 (cipher aes128-ctr, 128 bits) (active; 1 open channel(s))>>>
zabbix
3. 思路分析¶
1.远程登录到web服务器
2.执行操作
4. 定义函数测试¶
vim exec_cmd_func.py
#!/usr/bin/python
import paramiko
def exec_cmd(cmd):
# 创建一个ssh模块
ssh = paramiko.SSHClient()
# 设置连接方式
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接远程主机 ip地址 ,端口号,用户名,密码(在远程你主机真实存在的)
ssh.connect("10.0.8.2", 22, "ubuntu", "123456")
# ssh.connect("ip地址", 端口号, "用户名", "密码")
# 标准输入文件、标准输出文件、标准错误文件
# 在Linux上执行命令,返回结果
stdin, stdout, stderr = ssh.exec_command(cmd)
# 查看命令执行结果
print(stdout)
print(stdout.read().decode('utf8'))
# 释放资源
ssh.close()
exec_cmd("sudo docker ps |grep openvpn")
(env) root@4c16g:/jenkins-scripts# python exec_cmd_func.py
<paramiko.ChannelFile from <paramiko.Channel 0 (open) window=2097152 -> <paramiko.Transport at 0x9195d910 (cipher aes128-ctr, 128 bits) (active; 1 open channel(s))>>>
f17971d434a4 kylemanna/openvpn:2.4 "ovpn_run" 7 weeks ago Up 7 weeks 0.0.0.0:1194->1194/udp, :::1194->1194/udp openvpn
多个ip时的函数¶
#!/usr/bin/python
import paramiko
def ssh_exec_cmd(ip,cmd):
# 创建一个ssh模块
ssh = paramiko.SSHClient()
# 设置连接方式
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接远程主机 ip地址 ,端口号,用户名,密码(在远程你主机真实存在的)
ssh.connect(ip, 22, "ubuntu", "123456")
# ssh.connect("ip地址", 端口号, "用户名", "密码")
# 标准输入文件、标准输出文件、标准错误文件
# 在Linux上执行命令,返回结果
stdin, stdout, stderr = ssh.exec_command(cmd)
# 查看命令执行结果
print(stdout)
print(stdout.read().decode('utf8'))
# 释放资源
ssh.close()
# 定义web服务器ip列表,有多少都写这里!
ip_lst=['10.0.8.2','10.0.8.3']
# 循环执行
for ip in ip_lst:
ssh_exec_cmd(ip,"sudo docker ps |grep openvpn")
(env) root@4c16g:/jenkins-scripts# python test2.py
<paramiko.ChannelFile from <paramiko.Channel 0 (open) window=2097152 -> <paramiko.Transport at 0x2c587970 (cipher aes128-ctr, 128 bits) (active; 1 open channel(s))>>>
f17971d434a4 kylemanna/openvpn:2.4 "ovpn_run" 7 weeks ago Up 7 weeks 0.0.0.0:1194->1194/udp, :::1194->1194/udp openvpn
<paramiko.ChannelFile from <paramiko.Channel 0 (open) window=2097152 -> <paramiko.Transport at 0x2e1ba790 (cipher aes128-ctr, 128 bits) (active; 1 open channel(s))>>>
f524fca7dcb2 kylemanna/openvpn:2.4 "ovpn_run" 2 months ago Up 5 days 0.0.0.0:1194->1194/udp, :::1194->1194/udp openvpn
5. 脚本编写¶
vim update_webserver.py
#!/usr/bin/python
import paramiko
def ssh_exec_cmd(ip,cmd):
# 创建一个ssh模块
ssh = paramiko.SSHClient()
# 设置连接方式
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接远程主机 ip地址 ,端口号,用户名,密码(在远程你主机真实存在的)
ssh.connect(ip, 22, "ubuntu", "123456")
# ssh.connect("ip地址", 端口号, "用户名", "密码")
# 标准输入文件、标准输出文件、标准错误文件
# 在Linux上执行命令,返回结果
stdin, stdout, stderr = ssh.exec_command(cmd)
# 查看命令执行结果
print(stdout)
print(stdout.read().decode('utf8'))
# 释放资源
ssh.close()
# 定义web服务器ip列表,有多少都写这里!
ip_lst=['10.0.8.2','10.0.8.3']
# 循环执行
for ip in ip_lst:
print("step1:删除旧网站内容")
try:
ssh_exec_cmd(ip,"cd /service/chupeng130 && sudo rm -rf *")
print("step1完成")
except:
print("failer")
exit
print("step2:拉取最新代码")
try:
ssh_exec_cmd(ip,"cd /service/chupeng130 && git clone https://gitee.com/chupeng130/chupeng130.git")
print("step2完成")
except:
print("failer")
exit
最后更新:
2022-02-23 13:04:43