开发过程中,可能会出现一种情况,开发人员需要不停的重启服务器上的某个服务来进行测试,以便调试代码,当开发人员没有远程管理系统权限的时候,就需要系统人员进行配合,因此考虑在Web服务器上架设一个简易的远程管理系统,以便开发人员能够管理远程服务器。
实现想法:
远程管理系统的脚本可以使用expect来实现,再由Web执行PHP程序调用shell脚本实现远程管理。
实现过程:
1、安装expect程序
Web系统为FreeBSD,expect需要安装
cd /usr/ports/lang/expect
make install clean
2、编写expect脚本
vi /home/garey/scripts/rebootService.sh
#!/usr/local/bin/expect
set timeout 30
spawn ssh user@xxx.xxx.xxx.xxx
expect “password:”
send “1234r”
expect “~]$”
send “cd scriptsr”
expect “scripts]$”
send “./restartService.shr”
expect eof
exit
3、编写Shell脚本
vi /home/garey/scripts/php_rebootService.sh
#!/bin/sh
/home/garey/scripts/rebootService.sh > /dev/null &
4、编写PHP脚本
vi rebootservice.php
<?php
$cmd = ‘/home/garey/scripts/php_rebootService.sh’;
passthru($cmd);
?>
5、注意
SSH登陆需要证书,所以Web服务器执行PHP脚本的用户目录下,.ssh/known_hosts文件中必须存在xxx.xxx.xxx.xxx ssh-rsa XXXXXX…字样,没有的话,用该账号登陆一次远程服务器就可以了。
Good, Tks