- 功能是公司一些服务器密码就那么几个,但是每次都要尝试几次很烦,所以通过脚本去尝试密码并记录。
- 逻辑是每次从 hostip.txt 中读取一个 ip ,然后扔到上面的循环里去试密码并记录
- 问题是每次读取完第一个 IP 并试完密码,循序就结束了,下面也提示在 read rows 。百思不得其解,求解答
## 密码列表,空格分隔
pwd_lists="passwd1 passwd2 passwd3 passwd4 passwd5"
## 记录找到的密码
psss_history_file="pwd_history.txt"
funTstPass(){
for pwd_list in ${pwd_lists}
do
sshpass -p ${pwd_list} ssh -o StrictHostKeyChecking=no centos@${test_ip} "exit" || sshpass -p ${pwd_list} ssh -o StrictHostKeyChecking=no root@${test_ip} "exit"
if [ $? -eq 0 ];then
echo -e "\n[ Success ] IP=\"$test_ip\" password=\"${pwd_list}\" "
echo "$test_ip ${pwd_list}" >> ${psss_history_file}
break
else
echo "[ Failure ] password=\"${pwd_list}\""
fi
done
}
cat hostip.txt | while read rows
do
test_ip=$rows
funTstPass
done:
+ pwd_lists="passwd1 passwd2 passwd3 passwd4 passwd5"
+ psss_history_file=pwd_history.txt
+ cat hostip.txt
+ read rows
+ test_ip=10.0.0.50
+ funTstPass
+ for pwd_list in ${pwd_lists}
+ sshpass -p 'passwd1' ssh -o StrictHostKeyChecking=no [email protected] exit
Permission denied, please try again.
+ sshpass -p 'passwd1' ssh -o StrictHostKeyChecking=no [email protected] exit
+ '[' 0 -eq 0 ']'
+ echo -e '\n[ Success ] IP="10.0.0.50" password="passwd1" '
[ Success ] IP="10.0.0.50" password="passwd1"
+ echo '10.0.0.50 passwd1'
+ break
+ read rows