目录
2、提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和
4、执行脚本输入用户名,若该用户存在,输出提示该用户已存在;若该用户不存在,提示用户输入密码,建立用户并设立其密码
5、用户输入密码,默认密码为123123 脚本判断密码是否正确,输入正确提示正确信息,连续输错3次则报警
6、检测指定范围主机是否通信,将通信的主机ip输出到文件host_ip中
8、初始密码为123123,用户输入密码,脚本判断密码是否正确,输入正确提示正确信息,连续输错3次则报警
1、计算1-100的和
[root@localhost for]# vim 1.sh
#!/bin/bash
#计算1-100的和
sum=0
for ((i=0;i<=100;i++))
do
sum=$[$sum + i ]
done
echo "1到100的和为:$sum"
[root@localhost for]# bash 1.sh
1到100的和为:5050
2、提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和
[root@localhost for]# vim 2.sh
#!/bin/bash
#提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和
read -p "请输入小于一个0-100的整数:" num
sum=0
if [ $num -le 100 ];then
for((i=1;i<=$num;i++))
do
sum=$[ sum + i]
done
echo "1-$num的和为:$sum"
else
echo "输入错误,请输入小于100的整数"
fi
[root@localhost for]# bash 2.sh
请输入小于一个0-100的整数:4
1-4的和为:10
3、 从1到100所有整数的偶数和、奇数和
[root@localhost for]# vim 3.sh
# !/bin/ bash
SUM=0
sum=0
for i in {1..100}
do
a=$[ i % 2 ]
if [ $a -eq 0 ] ;then
SUM=$[ SUM + i ]
else
sum=$[ sum + i]
fi
#sum=$[$sum + $i]
#let sum+=$i
done
echo "1到100的奇数和为$sum"
echo "1到100的偶数和为$SUM"
[root@localhost for]# bash 3.sh
1到100的基数和为2500
1到100的偶数和为2550
4、执行脚本输入用户名,若该用户存在,输出提示该用户已存在;若该用户不存在,提示用户输入密码,建立用户并设立其密码
[root@localhost for]# vim 4.sh
#!/bin/bash
#执行脚本输入用户名,若该用户存在,输出提示该用户已存在;若该用户不存在,提示用户输入密码,建立用户>并设立其密码
read -p "请输入你要创建的用户:" user
cat /etc/passwd |grep $user &> /dev/null
if [ $? -eq 0 ];then
echo "${user}用户已存在,请重新输入"
else
read -p "请输入创建用户的密码:" pass
useradd $user
echo "$pass" | passwd --stdin $user
fi
[root@localhost for]# bash 4.sh
请输入你要创建的用户:my
my用户已存在,请重新输入
[root@localhost for]# bash 4.sh
请输入你要创建的用户:yy
请输入创建用户的密码:123123
更改用户 yy 的密码 。
passwd:所有的身份验证令牌已经成功更新。
或者另一种方法
#!/bin/bash
#执行脚本输入用户名,若该用户存在,输出提示该用户已存在;若该用户不存在,提示用户输入密码,建立用户并设立其密码
read -p "请输入你要创建的用户:" user
useradd $user &> /dev/null ##如果所输入的用户已存在 useradd会执行出错
if [ $? -ne 0 ];then ##如果创建用户时出错 则返回值$?不为0 就输入用户存在
echo "${user}用户已存在,请重新输入"
else
read -p "请输入创建用户的密码:" pass
echo "$pass" | passwd --stdin $user
fi
5、用户输入密码,默认密码为123123 脚本判断密码是否正确,输入正确提示正确信息,连续输错3次则报警
[root@localhost for]# vim 5.sh
#!/bin/bash
#用户输入密码,脚本判断密码是否正确,输入正确提示正确信息,连续输错3次则报警
mm=123123
for ((i=1;i<=3;i++))
do
read -p "请输入用户密码:" pwd
if [ $mm -eq $pwd ];then
echo "密码输入正确"
exit 0 ##退出脚本并且返回码为0
else
echo "密码输入不正确,请重新输入"
fi
done
echo "警告密码错误三次"
[root@localhost for]# bash 5.sh
请输入用户密码:123
密码输入不正确,请重新输入
请输入用户密码:123
密码输入不正确,请重新输入
请输入用户密码:123123
密码输入正确
[root@localhost for]# bash 5.sh
请输入用户密码:123123
密码输入正确
6、检测指定范围主机是否通信,将通信的主机ip输出到文件host_ip中
[root@localhost for]# vim 6.sh
#!/bin/bash
#检测指定范围主机是否通信,并将通信的主机ip输出到文件host_ip中
for ((i=100;i<=110;i++))
do
ping -c 2 -w 3 192.168.52.$i &>/dev/null
if [ $? -eq 0 ]
then
echo "192.168.52.$i" >>/opt/host_ip
fi
done
[root@localhost shell]# bash 6.sh
[root@localhost opt]# cat host_ip_online
192.168.52.100 is online
192.168.52.110 is online
7、用户名存放在users .txt文件中,每行一个,判断文件里的用户是否存在,若该用户存在,输出提示该用户已存在;用户存在但没设密码,则接设置密码;若该用户不存在,提示用户输入密码,建立用户并设立其密码
[root@localhost for]# vim user.txt
scx
jl
zzz
my
[root@localhost for]# vim 7.sh
#!/bin/bash
for name in `cat /root/shell/for/user.txt`
do
cat /etc/passwd | awk -F: '{print $1}' | grep $name &> /dev/null
if [ $? -eq 0 ];then
echo "$name 用户已存在!"
res=`cat /etc/shadow | grep $name | awk -F: '{print $2 }'`
if [ "$res" == "!!" -o "$res" == "*" ];then
read -p "$name 用户没有设置密码,请输入密码:" pswd
echo $pswd | passwd --stdin $name
fi
else
echo "用户不存在,正在创建$name 用户....."
useradd $name
read -p "请设置用户$name 的密码:" passwd1
read -p "请再次输入用户$name 的密码:" passwd2
if [ "$passwd1" == "$passwd2" ];then
echo $passwd1 | passwd --stdin $name
else
echo "密码设置不一致"
fi
fi
done
[root@localhost for]# bash 7.sh
scx 用户已存在!
jl 用户已存在!
jl 用户没有设置密码,请输入密码:123123
更改用户 jl 的密码 。
passwd:所有的身份验证令牌已经成功更新。
用户不存在,正在创建zzz 用户.....
请设置用户zzz 的密码:123123
请再次输入用户zzz 的密码:123123
更改用户 zzz 的密码 。
passwd:所有的身份验证令牌已经成功更新。
my 用户已存在!
8、初始密码为123123,用户输入密码,脚本判断密码是否正确,输入正确提示正确信息,连续输错3次则报警
[root@localhost for]# vim 8.sh
#!/bin/bash
#初始密码
default=123123
for ((i=1;i<=3;i++))
do
read -p "请输入密码:" passwd
if [ "$passwd" == "$default" ];then
echo "密码输入正确"
##结束脚本 且返回码为0
exit 0
else
echo "密码输入不正确!请重新输入"
fi
done
echo "您的密码已连续输错3次,即将锁定!"
[root@localhost for]# bash 8.sh
请输入密码:123123
密码输入正确
[root@localhost for]# bash 8.sh
请输入密码:1231231
密码输入不正确!请重新输入
请输入密码:12312
密码输入不正确!请重新输入
请输入密码:123123
密码输入正确
[root@localhost for]# bash 8.sh
请输入密码:123
密码输入不正确!请重新输入
请输入密码:123
密码输入不正确!请重新输入
请输入密码:123
密码输入不正确!请重新输入
您的密码已连续输错3次,即将锁定!
9、生成8位数密码
[root@localhost ~]# vim 9.sh
#!/bin/bash
#生成8位数密码
##定义密码的取值范围
String="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
##循环8次
for ((i=1;i<=8;i++))
do
##每次循环随机获取0到字符串长度-1的下标值
num=$[ RANDOM % ${#String} ]
##进行字符串的截取,每次截取1个
var=${String:num:1}
##每次追加生成的密码
passwd+=$var
done
echo "本次生成的密码为:$passwd"
[root@localhost for]# bash 9.sh
本次生成的密码为:CRfkdaNy
[root@localhost for]# bash 9.sh
本次生成的密码为:U7m8jrPI
10、将0-255之间的十进制数转换为二进制数
方法一:使用减法
[root@localhost for]# vim 10.sh
#!/bin/bash
read -p "请输入一个0-255之间的整数:" num
##i的取值范围为:2的0次方 到 大小最接近255的2的次方
for i in {128,64,32,16,8,4,2,1}
do
#定义一个变量a a=输入的值减去i的值
a=$[ num - i ]
#如果输入的值减i小于0那么就输出0
if [ $a -lt 0 ];then
#不换行输出0
echo -n 0
#如果输入的值减i大于等于0那么就输出1
else
#不换行输出1
echo -n 1
#给num赋新值为输入的值减去i的得数
num=$[ num - i ]
fi
done
#换行输出
echo""
[root@localhost for]# bash 10.sh
请输入一个0-255之间的整数:234
11101010
[root@localhost for]# bash 10.sh
请输入一个0-255之间的整数:245
11110101
方法二:使用求余的方法
[root@localhost for]# vim 11.sh
#!/bin/bash
read -p "请输入一个0-255的整数值:" num
#进行8次运算
for i in {1..8}
do
#求出输入值除以2所得的余数赋值给var
var=$[ num % 2 ]
#对求出来的余数进行倒序追加所取的余数
sum=$var$sum
#得出进入下次循环的新值
num=$[ num /2 ]
done
#输出得到的二进制数
echo $sum
[root@localhost for]# bash 11.sh
请输入一个0-255的整数值:44
00101100
[root@localhost for]# bash 11.sh
请输入一个0-255的整数值:245
11110101