一.编写:给其他虚拟机主机建立用户脚本:
1.执行users_create.sh userlist passlist
2.建立userlist列表中的用户
3.设定userlist用户的密码为passlist列表中的密码
4.当脚本后文件个数不足2个时,报错
5.当文件行数不一致时,报错
6.当文件不存在时,报错
7.当用户存在时,报错
8.必须先建立好userfile passwdfile文件
[root@localhost mnt]# vim useradd_create.sh
#!/bin/bash
Auto_Connect()
{
/usr/bin/expect <<EOF|grep -E "authenticity|fingerprint|ECDSA|connecting|Warning|password|spawn " -v
set timeout 5
spawn ssh root@172.25.254.$IP_NUM "$1"
expect {
"yes/no" { send "yes\r";exp_continue }
"password" { send "westos\r" }
}
expect eof
EOF
}
for IP_NUM in 20
do
ping -c1 -w1 172.25.254.$IP_NUM &> /dev/null && {
MAX_LINE=`awk 'BEGIN{N=0}{N++}END{print N}' $1`
for LINE_NUM in `seq 1 $MAX_LINE`
do
USERNAME=`sed -n ${LINE_NUM}p $1`
PASSWORD=`sed -n ${LINE_NUM}p $2`
User_Check=`Auto_Connect "useradd $USERNAME"`
[ -n "$User_Check" ]&&{
echo $User_Check
}||{
Auto_Connect "echo $PASSWORD| passwd --stdin $USERNAME"
}
done
}|| echo 172.25.254.IP_NUM is down
done
[root@localhost mnt]# sh useradd_create.sh userfile passwordfile
passwd: all authentication tokens updated successfully.
二.编写脚本:备份数据库脚本:
1.执行db_dump.sh westos(数据库密码)
2.脚本执行后会备份数据库的所有库到/mnt/mysqldump目录中
3.备份文件名为“库名称.sql”,当文件存在时报错,并询问动作
“S” 跳过备份;
“B” 备份“库名称.sql”文件为“库名称_backup.sql”
“O” 覆盖原文件
#!/bin/bash
DATABASE_MESSAGE=`mysql -uroot -EN -e "show databases;"|grep -E "^\*|schema$" -v`
mkdir -p /mnt/mysqldump
for DATABASE_NAME in $DATABASE_MESSAGE
do
[ ! -e "/mnt/mysqldump/${DATABASE_NAME}.sql" ]&&{
mysqldump -uroot $DATABASE_NAME > /mnt/mysql_backup/${DATABASE_NAME}.sql
echo -e "\033[32m$DATABASE_NAME is backuped !!\033[0m"
}||{
ACTION_CMD(){
[ -e "$1" ]&&{
read -p "
[S]kip [B]ackup [O]verwrite
please input action: "ACTION
ACTION=`echo $ACTION|tr 'A-Z' 'a-z'`
case $ACTION in
s)
;;
b)
echo backup
;;
o)
echo overwrite
;;
exit)
echo bye
exit 0
;;
echo "error:please input [S] [B] [O]"
ACTION_CMD $1
esac
}
for DATABASE in hello westos linux
do
[ -e "/mnt/backup/$DATABASE" ]&&{
ACTION_CMD
}||{
}
done
三.编写脚本:服务自动部署:
1.执行脚本lamp.sh
2.执行后部署好论坛,并设定apache的网络接口为8080
四.脚本编写:批处理脚本:
1.检测教室中开启的所有主机,并抓取所有主机的主机名和IP的对应列表
2.把列表保存在/mnt/ip_host.list文件中
[root@desktop mnt]# vim bash.sh
#!/bin/bash
Auto_Connect()
{
/usr/bin/expect <<EOF
set timeout 5
spawn ssh root@172.25.254.$IP_NUM hostname
expect {
"yes/no" { send "yes\r";exp_continue }
"password" { send "westos\r" }
}
expect eof
EOF
}
for IP_NUM in {60..70}
do
ping -c1 -w1 172.25.254.$IP_NUM &> /dev/null && {
Host_Name=`Auto_Connect | grep -E "authenticity|fingerprint|ECDSA|connecting|Warning|password|spawn" -v`
}
echo $Host_Name 172.25.254.$IP_NUM | sed 's/\r//g' >>/mnt/ip_host.list
done