shell脚本批量操作linux主机:

一.环境介绍:

开启192.168.100.150-152(ctos1-3)和192.168.100.100(vsftpd)。

1.ssh登录:在192.168.100.100上操作

1)密码登录192.168.100.150:

ssh [email protected]  ##输入root密码123123

2)配置ssh密钥对登192.168.100.150:

ssh-keygen ##创建密钥对,提示直接回车

ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]  ##输入root密码上传公钥

ssh [email protected]  ##登录查看是否需要密码

ssh [email protected] "ifconfig eth0"  ##在192.168.100.150上执行命令“ifconfig eth0”查看ip地址

3)删除相关信息,为ssh脚本测试做准备:

192.168.100.100上:rm -rf /root/.ssh/known_hosts

192.168.100.150上:rm -rf /root/.ssh

二.编写脚本批量操作主机名:

1.需求描述:

1)修改主机名:

将192.168.100.150的主机名修改为“www.linuxfan.cn”

将192.168.100.151的主机名修改为“ca.linuxfan.cn”

将192.168.100.152的主机名修改为“db.linuxfan.cn”

2)复制安全优化脚本“security.sh”到每台服务器上并执行。

3)security.sh要求实现:配置yum及yum更新系统,删除不必要的用户,关闭不必要的服务,设置防火墙默认规则,优化ssh配置,创建admin用户、初始密码123123并设置下次admin登录时必须修改密码且限制只允许该用户使用su命令,通过tcp wrapper设置只有192.168.100.100等登录。

2.编写脚本:

1)编写安全优化脚本:

vi security.sh

#!/bin/bash

相关知识学习完成后完成

useradd admin

echo 123123 |passwd --stdin admin

:wq

2)编写批量操作脚本:

[[email protected] bin]# cat ssh-changename.sh

#!/bin/bash

#by linuxfan.cn 2016-9-24

##set variable

export PRE="192.168.100."

export PW="123123"

export HNF="/etc/sysconfig/network"

#create and security ssh pair key for ssh connect.

for i in {150,151,152};do

/usr/bin/expect <<EOF

spawn ssh-copy-id [email protected]$PRE$i

expect {

"(yes/no)?" { send "yes\r"; exp_continue }

"password:" { send "$PW\r" }

}

interact

expect eof

EOF

export CMD="ssh [email protected]$PRE$i"

##change hostname.

ping -c 2 $PRE$i &>/dev/null

SETVAL=$?

if [ $i -eq 150 ] && [ $SETVAL -eq 0 ];then

$CMD "sed -i ‘s/^HOST.*/HOSTNAME=www.linuxfan.cn/g‘ $HNF "

##create test file and make dir.

$CMD "touch /tmp/public-key-test.txt;mkdir -p /root/bin" &>/dev/null

##copy security.sh to host and exec it.

scp /root/bin/security.sh [email protected]$PRE$i:/root/bin &>/dev/null

$CMD "source /root/bin/security.sh" &>/dev/null

elif [ $i -eq 151 ] && [ $SETVAL -eq 0 ];then

$CMD "sed -i ‘s/^HOST.*/HOSTNAME=ca.linuxfan.cn/g‘ $HNF "

##create test file and make dir.

$CMD "touch /tmp/public-key-test.txt;mkdir -p /root/bin" &>/dev/null

##copy security.sh to host and exec it.

scp /root/bin/security.sh [email protected]$PRE$i:/root/bin &>/dev/null

$CMD "source /root/bin/security.sh" &>/dev/null

elif [ $i -eq 152 ] && [ $SETVAL -eq 0 ];then

$CMD "sed -i ‘s/^HOST.*/HOSTNAME=mysql.linuxfan.cn/g‘ $HNF "

##create test file and make dir.

$CMD "touch /tmp/public-key-test.txt;mkdir -p /root/bin" &>/dev/null

##copy security.sh to host and exec it.

scp /root/bin/security.sh [email protected]$PRE$i:/root/bin &>/dev/null

$CMD "source /root/bin/security.sh" &>/dev/null

else

echo "$PRE$i is down, Please check and try again."

exit 1

fi

done

[[email protected] bin]#

3)测试:

分别在三台主机上查看:

id admin

cat /etc/sysconfig/network

时间: 2024-10-18 01:09:59

shell脚本批量操作linux主机:的相关文章

使用shell脚本监控Linux主机

编写如下脚本(根据实际情况来修改邮件发送目的地址): [[email protected] ~]# cat sysmon.sh #!/bin/bash dug=$(df -h | grep "/$" | awk '{print $5}' | awk -F% '{print $1}') cug=$(expr 100 - $(mpstat | tail -1 | awk '{print $12}' | awk -F. '{print $1}')) mug=$(expr $(free | g

使用 shell 脚本监控 Linux 主机

编写以下脚本命令: [[email protected] sh]# vim sysmon.sh #!/bin/bash #提取性能监控指标(磁盘占用.CPU使用.内存使用) DUG=$(df -h | grep "/$" | awk '{print $5}' | awk -F% '{print $1}') CUG=$(expr 100 - $(mpstat | tail -1 | awk '{print $12}' | awk -F. '{print $1}')) MUG=$(expr

用shell脚本实现linux系统上wifi模式(STA和soft AP)的转换

转载请注明出处:http://blog.csdn.net/hellomxj1/ 功能:在linux系统上实现wifi STA与AP功能的转换 实现成果:1.添加wifi密码账户add_wifi_account: 2.wifi两种模式启动的脚本wifi_start: 3.帮助信息README_WIFI_START: 具体实现过程如下: 添加wifi密码账户add_wifi_account 1 #!/bin/sh 2 3 echo "Add Wifi Account ..." 4 5 if

用shell脚本监控linux系统 自动发送邮件

此脚本可以做一个定时的检测,超出设定的值,即往邮箱发送警告 脚本用到bc,sendmail,163邮箱, yum install bc #!/bin/bash #System Monitoring Script while [ 1 ] do #本机需开启postfix或sendmail服务. #报警邮件地址设置 [email protected] [email protected] #设置脚本运行间隔时间.单位(秒). RUNTIME=900 #内存使用率监控设置,单位 (%) MEMTHRE=

Shell脚本查看linux系统性能瓶颈(转)

Shell脚本查看linux系统性能瓶颈(转自:http://blog.51cto.com/lizhenliang/1687612) [[email protected] ~]# cat show_sys_info.sh #!/bin/bash # os_check() { if [ -e /etc/redhat-release ]; then REDHAT=`cat /etc/redhat-release |cut -d' ' -f1` else DEBIAN=`cat /etc/issue

使用 Shell 脚本自动化 Linux 系统维护任务

如果一个系统管理员花费大量的时间解决问题以及做重复的工作,你就应该怀疑他这么做是否正确.一个高效的系统管理员应该制定一个计划使得其尽量花费少的时间去做重复的工作.因此尽管看起来他没有做很多的工作,但那是因为 shell 脚本帮助他完成了大部分任务,这也就是我们将要探讨的东西. 什么是 shell 脚本? 简单的说,shell 脚本就是一个由 shell 一步一步执行的程序,而 shell 是在 Linux 内核和最终用户之间提供接口的另一个程序. 默认情况下,RHEL 7 中用户使用的 shel

使用Shell脚本对Linux系统和进程资源进行监控

ShellLinux脚本 摘要:Shell语言对于接触Linux的人来说都比较熟悉,它是系统的用户界面,提供了用户与内核进行交互操作的一种接口.本文我们以Bash做为实例总结了使用Shell对系统和进程资源进行监控的一些内容,希望对您能有帮助. Shell语言对于接触Linux的人来说都比较熟悉,它是系统的用户界面,提供了用户与内核进行交互操作的一种接口.它接收用户输入的命 令并把它送入内核去执行.实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核.它没有一般编程语言的“

使用 shell 脚本对 Linux 系统和进程资源进行监控

Shell 简介 Shell 语言对于接触 LINUX 的人来说都比较熟悉,它是系统的用户界面,提供了用户与内核进行交互操作的一种接口.它接收用户输入的命令并把它送入内核去执行.实际上 Shell 是一个命令解释器,它解释由用户输入的命令并且把它们送到内核.它没有一般编程语言的“编译 - 链接 - 运行”过程.不仅如此,Shell 有自己的编程语言用于对命令的编辑,它允许用户编写由 shell 命令组成的程序.Shell 编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用

Shell脚本监控Linux某个后台进程,当进程死掉后重新启动服务,以httpd为例

Shell脚本如下: vim monitor.sh #!/bin/bash while true # 无限循环 flag=`ps -aux |grep "httpd" |grep -v "grep" |wc -l` do if [[ $flag -eq 0 ]] # 判断进程数如果等于0,则启动httpd then `systemctl start httpd` # 启动httpd echo `date` - "Apache restart" &