脚本1:万能解压
#!/bin/sh
ftype=`file "$1"`
case "$ftype" in
"$1: Zip archive"*)
unzip "$1" ;;
"$1: gzip compressed"*)
gunzip "$1" ;;
"$1: bzip2 compressed"*)
bunzip2 "$1" ;;
*) error "File $1 can not be uncompressed with smartzip";;
esac
脚本2:文件批量建立用户
#!/bin/bash
[ "$#" -ne "2" ]&&{ #判断脚本后是否为两个变量(用户文件和密码文件)
echo please input userfile and passfile
exit 1
}
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`
useradd $USERNAME
echo $PASSWORD | passwd --stdin $USERNAME #更改用户密码
done
脚本2_plus
要求:
1.检查密码文件和用户文件行数是否匹配
2.检查文件是否存在
3.用户存在时报错,不更改密码
4.文件数量错误报错
#!/bin/bash
check_file() #检查文件有效性和数目
{
if
[ "$#" -ne "2" ]
then
echo "Input File"
exit 0
elif
[ ! -e "$1" ]||[ ! -e "$2" ]
then
echo "F ds n exist"
exit 0
fi
}
check_line() #检查行数函数
{
USER_LINE=`awk 'BEGIN{N=0}{N++}END{print N}' $1`
PASS_LINE=`awk 'BEGIN{N=0}{N++}END{print N}' $2`
if
[ $USER_LINE -gt $PASS_LINE ]
then
echo ERROR LINE in PASSFILE
elif
[ $USER_LINE -lt $PASS_LINE ]
then
echo ERROR LINE in USERFILE
else
useradd "$USERNAME" "$PASSNAME"
fi
echo checkline_$1
}
check_file "$1" "$2"
check_line "$1" "$2"
for LINE_NUM in `seq 1 $PASS_LINE`
do
USERNAME=`sed -n "${LINE_NUM}p" $1`
PASSWORD=`sed -n "${LINE_NUM}p" $2`
useradd $USERNAME
[ "$?" -eq "0" ]&&{ #返回之不为0时执行
echo $PASSWORD | passwd --stdin $USERNAME&> /dev/null && echo $USERNAME exists
}
done
[root@141 mnt]# sh user_create.sh userfile passfile
checkline_userfile
useradd:用户“vincent”已存在
useradd:用户“hello”已存在
useradd:用户“westos”已存在
脚本3:select命令的应用
[root@localhost ~]# cat select.sh
#!/bin/bash
echo "What is your favourite langusge"
select var in "English" "German" "Spanish";do
break
done
echo "You have selected $var"
[root@localhost ~]# sh select.sh
What is your favourite langusge
1) English
2) German
3) Spanish
#? 1
You have selected English
脚本4:检查ip是否可以连接
[root@localhost ~]# cat check_ip.sh
#!/bin/bash
read -p "Input IP:" -s IP
#ping -c1 -w1 $IP &> /dev/null && echo $IP is up || echo $IP is down
ping -c1 -w1 $IP
[ $? -ne 0 ]&&echo $IP is down || echo $IP is up
[root@localhost ~]# sh check_ip.sh
Input IP:PING 172.25.254.56 (172.25.254.56) 56(84) bytes of data.
64 bytes from 172.25.254.56: icmp_seq=1 ttl=64 time=1.41 ms
--- 172.25.254.56 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.419/1.419/1.419/0.000 ms
172.25.254.56 is up
脚本5:控制添加删除用户
[root@141 mnt]# cat user_ctrl.sh
#!/bin/bash
ACTION_ADD(){
[ "$action" = "add" ] &> /dev/null &&{
read -p "Input username: " USERNAME
useradd $USERNAME
read -p "Input password: " PASSWORD
echo $PASSWORD | passwd --stdin $USERNAME
}
}
ACTION_DEL(){
[ "$action" = "del" ] &> /dev/null &&{
read -p "Input username: " USERNAME
userdel -r $USERNAME
}
}
user_ctrl()
{
read -p "Input the action: " action
[ "$action" = "exit" ]&&{
echo exit
exit 0
}
ACTION_ADD
ACTION_DEL
user_ctrl
}
user_ctrl
使用case语句实现用户添加或删除
#!/bin/bash
case $3 in
add)
check_file()
{
if
[ "$#" -ne "2" ]
then
echo "Input File"
exit 0
elif
[ ! -e "$1" ]||[ ! -e "$2" ]
then
echo "F ds n exist"
exit 0
fi
}
check_line()
{
USER_LINE=`awk 'BEGIN{N=0}{N++}END{print N}' $1`
PASS_LINE=`awk 'BEGIN{N=0}{N++}END{print N}' $2`
if
[ $USER_LINE -gt $PASS_LINE ]
then
echo ERROR LINE in PASSFILE
elif
[ $USER_LINE -lt $PASS_LINE ]
then
echo ERROR LINE in USERFILE
else
useradd $1
fi
echo checkline_$1
}
check_file "$1" "$2"
check_line "$1" "$2"
for LINE_NUM in `seq 1 $PASS_LINE`
do
USERNAME=`sed -n "${LINE_NUM}p" $1`
PASSWORD=`sed -n "${LINE_NUM}p" $2`
useradd $USERNAME
[ "$?" -eq "0" ]&&{
echo $PASSWORD | passwd --stdin $USERNAME&> /dev/null && echo $USERNAME exists
}
done
;;
del)
USER_LINE=`awk 'BEGIN{N=0}{N++}END{print N}' $1`
PASS_LINE=`awk 'BEGIN{N=0}{N++}END{print N}' $2`
for LINE_NUM in `seq 1 $PASS_LINE`
do
USERNAME=`sed -n "${LINE_NUM}p" $1`
PASSWORD=`sed -n "${LINE_NUM}p" $2`
userdel -r $USERNAME
done
;;
*)
echo error
esac
[root@141 Desktop]# sh userctrl.sh userfile psfile add
useradd: user 'userfile' already exists
checkline_userfile
123 exists
456 exists
879 exists
脚本6:查看可以建立连接的用户
[root@141 mnt]# cat check_host.sh
#!/bin/bash
for NUM in `seq 1 254`
do
ping -c1 -w1 "172.25.254.$NUM" &> /dev/null && echo "172.25.254.$NUM"||continue
done
[root@141 mnt]# sh check_host.sh
172.25.254.79
172.25.254.141
172.25.254.241
脚本7:备份数据库
新建数据库:
[root@141 ~]# mysql -uroot
MariaDB [(none)]> create database new_database
-> ;
MariaDB [(none)]> use new_database;
Database changed
MariaDB [new_database]> create table usre(
-> username varchar(50) not null,
-> passwd varchar(20) not null);
MariaDB [new_database]> insert into usre values("user1","122");
MariaDB [new_database]> insert into usre values("user2","221");
MariaDB [new_database]> select * from usre;
+----------+--------+
| username | passwd |
+----------+--------+
| user1 | 122 |
| user2 | 221 |
+----------+--------+
2 rows in set (0.00 sec)
显示数据库的一种方式:
[root@141 ~]# mysql -uroot -EN
MariaDB [(none)]> show databases;
*************************** 1. row ***************************
information_schema
*************************** 2. row ***************************
daba-test
*************************** 3. row ***************************
mysql
*************************** 4. row ***************************
new_database
*************************** 5. row ***************************
new_db
*************************** 6. row ***************************
performance_schema
*************************** 7. row ***************************
redhat
*************************** 8. row ***************************
test
*************************** 9. row ***************************
ultrax
9 rows in set (0.00 sec)
数据库中的Schema,为数据库对象的集合,一个用户一般对应一个schema。 |
mysql -uroot -EN "show databases;" #显示所有数据库
grep -E "^\*|schema$" -v` 过滤掉*开头和schema结尾的字符行,即所有数据库名
mysqldump -uroot $DATABASE_NAME > /mnt/mysql_dump/${DATABASE_NAMW}.sql #备份数据库到相应.sql文件中
#!/bin/bash
DATABASE_MESSAGE=`mysql -uroot -EN -e "show databases;" | grep -E "^\*|schema$" -v`
mkdir -p /mnt/mysql_dump
for DATABASE_NAME in $DATABASE_MESSAGE
do
mysqldump -uroot $DATABASE_NAME > /mnt/mysql_dump/${DATABASE_NAMW}.sql
[ "$?" -eq "0" ]&&{
echo -e "$DATABASE_NAME is backuped!"
}
done
[root@141 ~]# sh database.sh
daba-test is backuped!
mysql is backuped!
new_database is backuped!
new_db is backuped!
redhat is backuped!
test is backuped!
ultrax is backuped!