新秀篇 ##Linux中shell应用示例##

一.编写:给其他虚拟机主机建立用户脚本:
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

猜你喜欢

转载自blog.csdn.net/china_zgd/article/details/80851126