有些时候我们希望运行一个脚本,直接连接linux服务器并执行命令。
通过shell文件
因为可能要频繁输入密码,所以建议先免密登录一下 ssh-copy-id user@ip
java示例:
mvn clean package -Dmaven.test.skip=true
remote=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 << eeooff
cd /app/memory/
sh bin/boot.sh restart
exit
eeooff
echo ok
web示例:
umi build
remote=root@www.tianyunperfect.cn
# 在本地执行的代码,比如上传文件到服务器 scp 本地文件 user@ip:远程目录
scp -r dist/* ${remote}:/app/memory/static
echo ok
案例:推送静态文件
将dist下的文件全部推送到static目录下
remote=worker@10.20.222.191
# 在本地执行的代码,比如上传文件到服务器 scp 本地文件 user@ip:远程目录
scp -r dist/* ${remote}:/apps/biaozhu-nlu2/static
echo ok
通过python脚本
可以通过用户名和密码方式登录,也可以通过pkey秘钥方式登录,将passwd参数替换即可。
import paramiko
ip = "soft.tianyunperfect.cn" # 需要远程的PC
port = 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