网上有人说用expect,感觉太麻烦。直接用管道命令就可解决。
环境:
1. 普通user用户可以ssh登录到服务器
2. root用户不允许ssh
3. user用户可sudo su - 到root,知道root密码
vi run_cmd_on_remote.sh
#!/bin/bash
# 使用ssh命令执行远程服务器上的脚本
# ssh无密码登录远程机器方法:
# ssh-keygen
# ssh-copy-id -p $remote_port root@$remote_ip
remote_ip=192.168.1.188
remote_port=22
ssh -tt -p $remote_port user@$remote_ip /home/user/run.sh
注意:因为使用user用户连接的,所以run.sh脚本最好放在/home/user/下,否则无权限执行
vi run.sh
#!/bin/bash
# 以 root用户权限执行脚本方法:通过管道命令把root密码传过去
echo "rootpassword"|sudo -S /root/restart_tomcat.sh
==========================================================
附:
restart_tomcat.sh脚本启动 tomcat的命令:
./startup.sh
要改成:
nohup ./startup.sh &
sleep 5
否则tomcat无法启动。