首页 » 工作 » 正文

shell自动登录ssh并执行一些命令或代码

发布者:站点默认
2012/11/2 浏览数(4,308) 分类:工作 shell自动登录ssh并执行一些命令或代码已关闭评论

任务描述:

使用shell脚本登录远程服务器,并执行命令:添加反向代理站点。Windows用户的方法见文末

示例代码的功能:

登录远程linux服务器并在上边执行命令后返回当前linux主机,执行的命令为“在远程服务器上执行一个添加反向代理站点的命令”。添加站点需要知道域名,所以这个脚本有一个参数,这个参数就是域名。

示例代码的用法:

raps.sh xxxxx.com

raps.sh代码:

#!/usr/bin/expect
# 名称:Remote Add Proxy Site,^_^
# 说明:自动登上远程服务器后添加反向代理站点(配置内置)
# 注意:需要传递一个域名参数,脚本中的proxySiteAdd是远程服务器上的添加站点工具
# 用法:raps xxxx.com
# 2012-11-02 08:55:21

# 配置
set user upall
set passwd upall@remote
set server 158.164.198.210
set port 2222
set dn [lindex $argv 0]

# 登录并执行命令
spawn ssh $user@$server -p $port
expect "password:"
send "${passwd}\n"
expect "]# "
send "proxySiteAdd ${dn}\n"
expect "]# "
exit

补充:

1、“expect “]# “”用于接收终端输出,如果输出中有“]# ”标志就往下继续执行命令;send 用于在远程服务器上执行命令。

2、传递参数时不能直接使用“$1”、“$2”,“set dn [lindex $argv 0]”会把第0个参数赋值给$dn,若是“set dn [lindex $argv 2]”会把第3个参数赋值给$dn。

远程服务器上的 proxySiteAdd 代码:

#!/bin/bash
HTTPD_CONF="/etc/httpd/conf/vhosts.conf"
# 生成apache虚拟主机配置文件(反向代理)
echo "<VirtualHost *:80>">> $HTTPD_CONF
echo "        ServerName www.$1">> $HTTPD_CONF
echo "        ServerAlias $1">> $HTTPD_CONF
echo "        ProxyRequests Off">> $HTTPD_CONF
echo "        <Proxy *>">> $HTTPD_CONF
echo "                Order deny,allow">> $HTTPD_CONF
echo "                Allow from all">> $HTTPD_CONF
echo "        </Proxy>">> $HTTPD_CONF
echo "        ProxyPass / http://$1.demo.upall.cn/">> $HTTPD_CONF
echo "        ProxyPassReverse / http://$1.demo.upall.cn/">> $HTTPD_CONF
echo "</VirtualHost>">> $HTTPD_CONF
echo "CONF: "$HTTPD_CONF
#### 下边的代码是跳转用的,如果不想使用反向代理可以用下边的代码取代上边的
# 生成apache虚拟主机配置文件(跳转)
#echo "<VirtualHost *:80>">> $HTTPD_CONF
#echo " ServerName www.$1">> $HTTPD_CONF
#echo " ServerAlias $1">> $HTTPD_CONF
#echo " Redirect / http://$1.demo.upall.cn/">> $HTTPD_CONF
#echo "</VirtualHost>">> $HTTPD_CONF

Windows用户的解决办法

可以使用plink.exe实现这个功能,示例:

plink -pw yourPassword root@123.123.123.123 -P 23 doSomething.sh

<完>
该功能会加到这个脚本这里:

点击返回顶部
  1. 留言
  2. 联系方式