shell脚本实现远程执⾏命令
功能介绍
在⾯对⼤量的主机需要执⾏相同命令时,如果是⼈⼯机械的⼀台台登陆执⾏该命令的话不免显得太笨拙,这时可以利⽤shell脚本的⽅式实现,只要在本地输⼊远程主机ip就⾏,如果是在同⼀⽹段则只需要输⼊最后的ip号即可,这⾥⽤到了字符串拼接。
#!/bin/bash
i=1
#remotecommand="service zabbix_agentd start"
remotecommand="service zabbix_agentd start"
user="root"
ipprefix="192.168.212."
while [ i==1 ]
do
read ipsuffix
remoteip=$ipprefix$ipsuffix
ssh $user@$remoteip "$remotecommand"
done
来看看执⾏结果:
[root@beta-test-zabbix-1 local]# sh RunRemoteZabbix.sh
96
Starting zabbix_agentd:  [  OK  ]
97
Starting zabbix_agentd:  [  OK  ]
99
Starting zabbix_agentd:  [  OK  ]
字符串拼接demo:
#!/bin/bash
name="Shell"
url="c.biancheng/shell/"
str1=$name$url  #中间不能有空格
str2="$name $url"  #如果被双引号包围,那么中间可以有空格
str3=$name": "$url  #中间可以出现别的字符串
str4="$name: $url"  #这样写也可以
str5="${name}Script: ${url}index.html"  #这个时候需要给变量名加上⼤括号
echo $str1
echo $str2
echo $str3
shell脚本返回执行结果echo $str4
echo $str5
输出结果:
Shellc.biancheng/shell/
Shell c.biancheng/shell/
Shell: c.biancheng/shell/
Shell: c.biancheng/shell/
ShellScript: c.biancheng/shell/index.html
改进
在⾯对连续的IP地址时,可以⽤变量⾃增的⽅式去执⾏,就不⽤⼀台台的输⼊IP了,先看看怎么实现变量⾃增
var=$((var+1))
((var=var+1))
((var+=1))
((var++))
let "var=var+1"
let "var+=1"
let "var++"
-eq # equal
-ne # not equal
-lt # less than
-le # less than or equal
-gt # greater than
-ge # greater than or equal
最终代码:
#!/bin/bash
i=1
#remotecommand="service zabbix_agentd start"
remotecommand="service zabbix_agentd start"
user="root"
ipprefix="192.168.212."
while [ "$i" -lt "5" ]
do
read ipsuffix
remoteip=$ipprefix$ipsuffix
let "i++"
ssh $user@$remoteip "$remotecommand"
done
⾃动输⼊密码
在上述远程执⾏命令时,⾃⼰还需要⼿动输⼊远程服务器的密码,现在通过脚本实现⾃动输⼊:
#!/usr/bin/expect
spawn ssh root@192.168.212.136 "ls /serice/iamthebest"
sleep 1
expect "Password:"
send "awifi@123\r"
sleep 1
interact
exit
注意执⾏时需要⽤expect⽽不是sh和bash,在需要输⼊密码的语句前加⼊spawn,这⾥interact是可以停留在远程机⼦上看执⾏结果,不然执⾏结果⽆法返回

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。