有些时候我们希望运行一个脚本,直接连接linux服务器并执行命令。
通过shell文件
因为可能要频繁输入密码,所以建议先免密登录一下 ssh-copy-id user@ip
java示例:
mvn clean package -Dmaven.test.skip=trueremote=root@www.tianyunperfect.cn# 在本地执行的代码,比如上传文件到服务器 scp 本地文件 user@ip:远程目录scp anki_memory/target/anki_memory-1.0-SNAPSHOT.jar ${remote}:/app/memory/# 执行命令ssh -o StrictHostKeyChecking=no ${remote} > /dev/null 2>&1 << eeooffcd /app/memory/sh bin/boot.sh restartexiteeooffecho ok
web示例:
umi buildremote=root@www.tianyunperfect.cn# 在本地执行的代码,比如上传文件到服务器 scp 本地文件 user@ip:远程目录scp -r dist/* ${remote}:/app/memory/staticecho ok
案例:推送静态文件
将dist下的文件全部推送到static目录下
remote=worker@10.20.222.191# 在本地执行的代码,比如上传文件到服务器 scp 本地文件 user@ip:远程目录scp -r dist/* ${remote}:/apps/biaozhu-nlu2/staticecho ok
通过python脚本
可以通过用户名和密码方式登录,也可以通过pkey秘钥方式登录,将passwd参数替换即可。
import paramikoip = "soft.tianyunperfect.cn" # 需要远程的PCport = 22 # 远程端口userName = "" # 登陆的用户名passwd = "" # 登陆的密码cmd = """/sbin/ifconfig eth0 |grep inet | awk -F ' ' '{print $2}'"""# 拼接cmd,每行后面加分号cmd = cmd.splitlines()cmd = ";".join(cmd)def exeCmd(ip, userName, passwd, port, cmd):# 建立SSH连接ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect(ip, port, userName, passwd)stdin, stdout, stderr = ssh.exec_command(cmd)result = stdout.read().decode("UTF-8")print(result)ssh.close()if __name__ == '__main__':exeCmd(ip, userName, passwd, port, cmd)》》》》》172.17.8.13
