Shell脚本-示例

一、用户建立脚本

[root@host2 mnt]# vim userlist
[root@host2 mnt]# cat userlist 
mark1
mark2
mark3
[root@host2 mnt]# vim passlist
[root@host2 mnt]# cat passlist 
1
2
3
[root@host2 mnt]# vim user_create.sh 
[root@host2 mnt]# cat user_create.sh 
#!/bin/bash
if [ $# -lt 2 ]
then
    echo "Error:please input userlist and passlist after scripts!"
elif [ ! -e $1 ]
then
    echo "Error:$1 is not exist!!"
elif [ ! -e $2 ]
then 
    echo "Error:$2 is not exist!!"
else
    MAX_LINE1=`awk 'BEGIN{N=0}{N++}END{print N}' $1`
    MAX_LINE2=`awk 'BEGIN{N=0}{N++}END{print N}' $2`
    [ $MAX_LINE1 -eq $MAX_LINE2 ]&&{
        for NUM in `seq 1 $MAX_LINE1`
        do
            USER=`sed -n ${NUM}p $1`
            PASS=`sed -n ${NUM}p $2`
            EX=`awk -F : '{print $1}' /etc/passwd | grep $USER`
            [ -z "$EX" ]&&{
                useradd $USER
                echo $PASS | passwd --stdin $USER  
            }||{
                echo "Error:$USER is exist!"
            }
        done
    }||{
        echo "Error:The line is different!!"
    }
fi
[root@host2 mnt]# sh user_create.sh 
Error:please input userlist and passlist after scripts!
[root@host2 mnt]# sh user_create.sh ddd passlist 
Error:ddd is not exist!!
[root@host2 mnt]# sh user_create.sh  passlist 
Error:please input userlist and passlist after scripts!
[root@host2 mnt]# vim userlist
[root@host2 mnt]# cat userlist 
mark1
mark2
mark3
mark4
[root@host2 mnt]# sh user_create.sh userlist passlist 
Error:The line is different!!

脚本运行结果

[root@host2 mnt]# sh user_create.sh userlist passlist 
Changing password for user mark1.
passwd: all authentication tokens updated successfully.
Changing password for user mark2.
passwd: all authentication tokens updated successfully.
Changing password for user mark3.
passwd: all authentication tokens updated successfully.

二、数据库备份

执行db_dump.sh westos(数据库密码)
脚本执行后备份数据库中的所有库到/mnt/mysqldump/目录中
备份文件名称为“库名称.sql” 当此文件存在时报错并询问动作
输入“S” 跳过备份,当输入“B” 时备份“库名称.sql” 文件为“库名称_backup.sql”,当输入“O”时,覆盖源文件
[root@host2 mnt]# vim db_dump.sh
[root@host2 mnt]# cat db_dump.sh 
#!/bin/bash
mkdir /mnt/mysqldump/
DATA=`mysql -uroot -pwestos -NE -e "SHOW DATABASES;" | grep -E '^\*|schema$' -v`
for DATABASE in $DATA
do
    [ ! -e "/mnt/mysqldump/$DATABASE.sql" ]&&{
        mysqldump -uroot -p$1 $DATABASE > /mnt/mysqldump/$DATABASE.sql
    }||{
    echo Error:/mnt/mysqldump/$DATABASE.sql is already exist!!
    read -p "please input [S/B/O]: " INPUT
    case $INPUT in
        S)
        continue
        ;;
        B)
        mv /mnt/mysqldump/$DATABASE.sql /mnt/mysqldump/"$DATABASE"_backup.sql
        mysqldump -uroot -p$1 $DATABASE > /mnt/mysqldump/$DATABASE.sql
        ;;
        O)
        mysqldump -uroot -p$1 $DATABASE > /mnt/mysqldump/$DATABASE.sql
        ;;
        *)
        echo Error:please input S/B/O !!
        esac
    }
done
[root@host2 mnt]# sh db_dump.sh westos
[root@host2 mnt]# sh db_dump.sh westos
mkdir: cannot create directory ‘/mnt/mysqldump/’: File exists
Error:/mnt/mysqldump/mysql.sql is already exist!!
please input [S/B/O]: B
Error:/mnt/mysqldump/westos.sql is already exist!!
please input [S/B/O]: B
[root@host2 mnt]# cd mysqldump/
[root@host2 mysqldump]# ls
mysql_backup.sql  mysql.sql  westos_backup.sql  westos.sql

三、搭建论坛

[root@host2 mnt]# vim lamp.sh 
[root@host2 mnt]# cat lamp.sh 
#!/bin/bash
yum install httpd php mod_ssl php-mysql mariadb-server -y
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
setenforce 0
sed '1askip-networking=1' -i /etc/my.cnf
systemctl restart mariadb
mysql_secure_installation <<EOF

y
westos
westos
y
y
y
y
EOF

sed '/^Listen/cListen\ 8080' -i /etc/httpd/conf/httpd.conf
cp /mnt/Discuz_X3.2_SC_UTF8.zip /var/www/html/
cd /var/www/html
unzip Discuz_X3.2_SC_UTF8.zip
chmod 777 /var/www/html/upload -R
systemctl restart httpd
IPADDR=`ifconfig eth0 | awk -F " " '/inet\>/{print $2}'`
firefox http://$IPADDR:8080/upload
[root@host2 mnt]# cd /var/www/html/
[root@host2 html]# ls
Discuz_X3.2_SC_UTF8.zip  readme  upload  utility
[root@host2 html]# ls -ld upload/
drwxrwxrwx. 12 root root 4096 Dec  8  2015 upload/

四、批处理
检测教室中开启的所有主机,并抓取所有主机的值机名称和ip的对应列表,把列表保存在/mnt/ip_host.list 文件中

[root@host2 mnt]# vim host_ip.sh
[root@host2 mnt]# cat host_ip.sh 
#!/bin/bash
Auto_ssh(){
/usr/bin/expect <<EOF
set timeout 2
spawn ssh root@$1 'hostname'
expect {
"yes/no" { send "yes\r";exp_continue }
"password" { send "redhat\r" }
}
expect eof
EOF
}
for IP_num in 10
do 
    ping -c1 -w1 172.25.254.$IP_num &> /dev/null
    if [ "$?" = "0" ]
    then
    HOSTNAME=`Auto_ssh 172.25.254.$IP_num|sed -n '$p'|awk -F "." '{print $1}'`
    echo "$HOSTNAME     A      172.25.254.$IP_num"  >>/mnt/ip_host.list
    fi
done
[root@host2 mnt]# cat ip_host.list 
foundation10     A      172.25.254.10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值