服务器密码一般就那么几个,但不想一个个手输尝试,也为了避免手敲错了,就简单写个脚本去验证密码。
-
安装sshpass
sudo yum install sshpass
-
向指定ip主机验证正确的密码并记录
#!/bin/bash
## file name: getPassword.sh
## 要测试的IP,是参数传入的
test_ip=$1
## 密码列表,空格分隔
pwd_lists="123456 admin root !QAZ2wsx"
## 记录找到密码的文件
psss_history_file="pwd_history.txt"
## 判断,如果没有写参数则,提示并退出
if [ $# -eq 0 ];then
echo -e "\nUage: \n\tsh $0 127.0.0.1"
exit
fi
## 打印历史密码
echo -e "\n----------------- history passwd -----------------"
cat ${psss_history_file} |grep ${test_ip}
echo -e "----------------- history passwd -----------------\n"
#IFS=$'\n'
## 循环遍历
for pwd_list in ${pwd_lists}
do
sshpass -p ${pwd_list} ssh -o StrictHostKeyChecking=no root@${test_ip} "exit"
## 判断sshpass执行是否成功
if [ $? -eq 0 ];then
## 提示信息,当前正在测试的IP 和密码
echo -e "\n[ Success ] IP=\"$1\" password=\"${pwd_list}\" "
## 将找到的密码保存到文件里
echo "$1:${pwd_list}" >> ${psss_history_file}
## 找到密码后,退出脚本,不是退出循环
exit
else
## 提示当前这个密码没有成功
echo "[ Failure ] password=\"${pwd_list}\""
fi
done
echo "$1:" >> ${psss_history_file}
-
读取ip列表尝试ssh登录密码
#!/bin/bash
IFS=$'\n'
for line in `cat ipList.txt`
do
echo $line
./getPassword.sh $line
done