#!/bin/bash
Auto_connect()
{
/usr/bin/expect <<EOF
set timeout 10
spawn ssh [email protected].$IP_NUM hostname
expect {
"yes/no" { send "yes\r";exp_continue }
"password:" { send "westos\r" }
}
expect eof
EOF
}
for IP_NUM in {5..9}
do
ping -c1 -w1 172.25.254.$IP_NUM &> /dev/null &&{
Host_Name=` Auto_connect|grep -E "authenticity|fingerprint|connecting|password|spawn|Warning" -v `
}
echo $Host_Name 172.25.254.$IP_NUM | sed 's/\r//g'
done
#!/bin/bash
for NUM in {1..10}
do
while [ ! "$NUM" -eq "4" ]
do
echo $NUM
break
done
done
#!/bin/bash
for ((i=10;i>=0;i--))
do
echo -n " after $i's is end "
echo -ne "\r \r"
sleep 1
done
#!/bin/bash
read -p "please input minute:" m
read -p "please input second:" s
i=$[m*60+s]
for((p=$i;p>0:p--))
do
A=$[$p/60]
B=$[$p%60]
echo -ne "\r$A:$B \r"
sleep 1
done
#!/bin/bash
PRINT_MESSAGE()
{
echo -n "$MIN:$SEC "
sleep 1
echo -ne "\r \r"
}
MIN=1
SEC=10
for ((;SEC>=0;SEC--))
do
[ "$SEC" = "0" -a "$MIN" = "0" ]&& exit 0
[ "$SEC" = "0" -a "$MIN" -gt "0" ]&&{
PRINT_MESSAGE
((MIN--))
SEC=60
}
PRINT_MESSAGE
done
六、shell脚本(计算器)
#!/bin/bash
read -p "please input the first number:" A
read -p "please input the calculator :" B
read -p "please input the second number:" C
bc <<EOF
$A $B $C
EOF
七、shell脚本:执行自己的电脑在别人的电脑上若用户不存在建立用户
#!/bin/bash
Auto_Connect()
{
/usr/bin/expect <<EOF |grep -E "authenticity|ECDSA|connecting|Warning|spawn|password" -v
set timeout 5
spawn ssh [email protected].$NUM "$1"
expect {
"yes/no" {send "yes\r";exp_continue }
"password:" { send "westos\r"}
}
expect eof
EOF
}
for NUM in 13
do
ping -c1 -w1 172.25.254.$NUM &>/dev/null &&{
Max_Line=`awk 'BEGIN{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.$NUM is down
done
八、shell脚本:数据库备份
执行脚本会备份数据库中的所有库到/mnt/mysqldump目录中,备份文件名称为“库名称.sql“当此文件存在时报错并询问动作,输入s跳过备份,当输入b时备份“库名称.sql”文件为“库名称_backup.sql",当输入o时覆盖源文件。
#!/bin/bash
mkdir -p /mnt/mysqldump
for DATABASE in $DATABASE
do
if [ -e /mnt/mysqldump/${DATABASE}.sql ]
then
read -p "$DATABASE has been dumped!
[S]kip [B]ackup [O]verwrite
Please input action: " ACT
case $ACT in
S)
;;
B)
mysqldump -uroot -pwestos $DATABASE > /mnt/mysqldump/${DATABASE}_backup.sql
;;
O)
mysqldump -uroot -pwestos $DATABASE > /mnt/mysqldump/${DATABASE}.sql
;;
esac
else
mysqldump -uroot -pwestos $DATABASE > /mnt/mysqldump/${DATABASE}.sql
echo $DATABASE is backuped!
fi
done
九、服务自动部署示例
设定apache网络端口为8080
#!/bin/bash
yum install httpd.x86_64 -y &> /dev/null;
sed -i "/^Listen/cListen 8080" /etc/httpd/conf/httpd.conf;
echo -e "\033[32mthe listen is changed;\033[0m"
sed -ne '42p' /etc/httpd/conf/httpd.conf
systemctl restart httpd
十、自动登陆脚本:
执行auto_ssh.sh 172.25.254.100 westos,自动登陆,并保持登陆
#!/bin/bash
/usr/bin/expect <<EOF
set timeout 10
spawn ssh root@$1
expect {
"yes/no" { send "yes\r";exp_continue }
"password:" { send "$2\r" }
}
expect interact
EOF
十一、批处理脚本:
检测教室中开启的主机,并获取所有主机名称和ip的对应列表,并保存在/mnt/ip_host.list中
#!/bin/bash
Auto_connect()
{
/usr/bin/expect <<EOF
set timeout 10
spawn ssh [email protected].$IP_NUM hostname
expect {
"yes/no" { send "yes\r";exp_continue }
"password:" { send "westos\r" }
}
expect eof
EOF
}
for IP_NUM in {1..50}
do
ping -c1 -w1 172.25.254.$IP_NUM &> /dev/null &&{
Host_Name=` Auto_connect|grep -E "authenticity|fingerprint|connecting|password|spawn|Warning" -v `
}
echo $Host_Name 172.25.254.$IP_NUM | sed 's/\r//g' >>/mnt/ip_host.list
done