功能:
shell脚本实现ssh自动登录-功能扩展,实现多个IP可选。有时我们可能要用ssh登录多个远程的帐号,这时下面的方法可能就会有所限制。现在重新扩展fwqs_ssh.sh 脚本实现可用ssh登录多个远程帐号。
shell脚本实现ssh自动登录 http://blog.csdn.net/xuecz1230/article/details/53939252
说明:
(1) fwqs_ssh list
打印预先设置的服务器列表,输出如下
./_fwqs_ssh.sh list:
1 IP: 192.168.1.158NAME: xcz1
2 IP: 192.168.1.159NAME: xcz2
3 IP: 192.168.1.160NAME: xcz3
4 IP: 192.168.1.161NAME: xcz4
5 IP: 192.168.1.162NAME: xcz5
(2) cmd list info
打印预先设置的服务器列表+详细信息,输出如下
./_fwqs_ssh.sh list info:
--------------------------------------------------
#info: this is xcz1
1 IP: 192.168.1.158NAME: xcz1
--------------------------------------------------
#info: this is xcz2
2 IP: 192.168.1.159NAME: xcz2
--------------------------------------------------
#info: this is xcz3
3 IP: 192.168.1.160NAME: xcz3
--------------------------------------------------
#info: this is xcz4
4 IP: 192.168.1.161NAME: xcz4
--------------------------------------------------
#info: this is xcz5
5 IP: 192.168.1.162NAME: xcz5
(3) cmd list n
ssh登录第n个服务器
代码如下:
fwqs_list.txt
### xcz1
#info: this is xcz1
xcz1 192.168.1.158 123
### xcz2
#info: this is xcz2
xcz1 192.168.1.159 123
### xcz3
#info: this is xcz3
xcz3 192.168.1.160 123
### xcz4
#info: this is xcz4
xcz4 192.168.1.161 123
### xcz5
#info: this is xcz5
xcz5 192.168.1.162 123
fwqs_ssh.sh代码
#!/bin/bash
LOGIN_FWQ=xxx
LOGIN_FWQ_IP=xxx
LOGIN_FWQ_PW=xxx
### 检查用法
#if [ $# -ne "2" ]
if [ $# -eq 0 ]
then
echo "argc: $#"
echo "usage:"
echo " ./cmd list"
echo " ./cmd list info"
echo " ./cmd list n"
exit
fi
if [[ $1 != "list" ]]
then
echo "argc: $#"
echo "usage2:"
echo " ./cmd list"
echo " ./cmd list info"
echo " ./cmd list n"
exit
fi
### 打印list
#if [ $1 == "list" & $# -eq 2 ]
#==> ./_fwqs_ssh.sh: line 25: [: missing `]'
#echo "$#"
if [[ $1 == "list" && $# -eq 1 ]]
then
echo "$0 $1:"
list_file=fwqs_list.txt
i=1
cat $list_file | while read line
do
LOGIN_FWQ=$(echo $line | awk '{print $1}')
LOGIN_FWQ_IP=$(echo $line | awk '{print $2}')
LOGIN_FWQ_PW=$(echo $line | awk '{print $3}')
#if [[ $LOGIN_FWQ_IP == "*.*.*.*" ]]
if [[ $LOGIN_FWQ_IP == *.*.*.* ]]
then
echo " $i IP: $LOGIN_FWQ_IP NAME: $LOGIN_FWQ"
let i+=1
fi
done
exit
fi
### 打印list + 详细信息
if [[ $1 == "list" && $2 == "info" ]]
then
echo "$0 $1 $2:"
list_file=fwqs_list.txt
i=1
cat $list_file | while read line
do
LOGIN_FWQ=$(echo $line | awk '{print $1}')
LOGIN_FWQ_IP=$(echo $line | awk '{print $2}')
LOGIN_FWQ_PW=$(echo $line | awk '{print $3}')
#if [[ $LOGIN_FWQ_IP == "*.*.*.*" ]]
if [[ $LOGIN_FWQ_IP == *.*.*.* ]]
then
echo " $i IP: $LOGIN_FWQ_IP NAME: $LOGIN_FWQ"
let i+=1
fi
if [[ $LOGIN_FWQ == "#info:" ]]
then
echo "--------------------------------------------------"
echo "$line"
fi
done
exit
fi
### 查找服务器
if [[ $1 == "list" && $# -eq 2 ]]
then
#echo "$0 $1:"
#list_file=fwqs_list.txt
i=0
#定义为环境变量没有用的,环境变量只是在子进程创建的时候可以从父进程复制到子进程,
#它无法实现从子进程往父进程传递,也不能在子进程运行期间从父进程获得新值。
#cat $list_file | while read line
while read line
do
LOGIN_FWQ=$(echo $line | awk '{print $1}')
LOGIN_FWQ_IP=$(echo $line | awk '{print $2}')
LOGIN_FWQ_PW=$(echo $line | awk '{print $3}')
#echo "------- $LOGIN_FWQ -- $LOGIN_FWQ_IP -- $LOGIN_FWQ_PW"
if [[ $LOGIN_FWQ_IP == *.*.*.* ]]
then
#echo "$LOGIN_FWQ -- $LOGIN_FWQ_IP -- $LOGIN_FWQ_PW"
let i+=1
fi
#echo ------- i = $i n = $2
if [[ $2 == $i ]]
then
#echo "$LOGIN_FWQ -- $LOGIN_FWQ_IP -- $LOGIN_FWQ_PW"
break
fi
done < fwqs_list.txt
#echo "out while $LOGIN_FWQ -- $LOGIN_FWQ_IP -- $LOGIN_FWQ_PW"
#echo ------- i = $i n = $2
if [[ $2 > $i ]]
then
echo "WARNING: $2 is out for lists(size: $i)"
exit
fi
else
echo "argc: $#"
echo "usage3:"
echo " ./cmd list"
echo " ./cmd list info"
echo " ./cmd list n"
exit
fi
### ssh登录
#echo "============================================"
#echo "$LOGIN_FWQ -- $LOGIN_FWQ_IP -- $LOGIN_FWQ_PW"
#LOGIN_FWQ=xxx
#LOGIN_FWQ_IP=xxx
#LOGIN_FWQ_PW=xxx
./_fwq_ssh-login_v2.sh $LOGIN_FWQ $LOGIN_FWQ_IP $LOGIN_FWQ_PW