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="http://c.biancheng.net/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
echo $str4
echo $str5

输出结果:

Shellhttp://c.biancheng.net/shell/
Shell http://c.biancheng.net/shell/
Shell: http://c.biancheng.net/shell/
Shell: http://c.biancheng.net/shell/
ShellScript: http://c.biancheng.net/shell/index.html

字符串拼接参考链接

改进

在面对连续的IP地址时,可以用变量自增的方式去执行,就不用一台台的输入IP了,先看看怎么实现变量自增

var=$((var+1))
((var=var+1))
((var+=1))
((var++))
let "var=var+1"
let "var+=1"
let "var++"

以上方法都可以实现自增,需要注意的是你需要用bash或者./来执行脚本而不是sh,会出现找不到let方法的报错
具体原因可以看看他们之间的区别:https://www.cnblogs.com/pcat/p/5467188.html
自增问题解决后就是循环了,循环条件涉及到变量的比对:

-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是可以停留在远程机子上看执行结果,不然执行结果无法返回

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值