shell 小白请教一个脚本问题
<ul>
<li>功能是公司一些服务器密码就那么几个,但是每次都要尝试几次很烦,所以通过脚本去尝试密码并记录。</li>
<li>逻辑是每次从 hostip.txt 中读取一个 ip ,然后扔到上面的循环里去试密码并记录</li>
<li>问题是每次读取完第一个 IP 并试完密码,循序就结束了,下面也提示在 read rows 。百思不得其解,求解答</li>
</ul>
<pre><code class="language-bash">## 密码列表,空格分隔
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 <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="395a5c574d564a79">[email protected]</a>${test_ip} "exit" || sshpass -p ${pwd_list} ssh -o StrictHostKeyChecking=no <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="24564b4b5064">[email protected]</a>${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:
</code></pre>
<pre><code class="language-bash">+ 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 <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="197a7c776d766a59282937293729372c29">[email protected]</a> exit
Permission denied, please try again.
+ sshpass -p 'passwd1' ssh -o StrictHostKeyChecking=no <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="cab8a5a5be8afbfae4fae4fae4fffa">[email protected]</a> 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
</code></pre>
收藏(0)
分享
相关标签:
注意:本文归作者所有,未经作者允许,不得转载
-
2022年9月9日 03:28
咋不加公钥
0
0
-
2022年9月9日 03:28
抱歉我答非所问了.
0
0
-
2022年9月9日 04:01
可能 sshpass 有使用你的 stdin 吧
0
0
-
2022年9月9日 04:01
可能跟 IFS 有关系.提前设置下 IFS.
0
0