shell 小白请教一个脚本问题

讨论 未结 5 36
Coolwinds
Coolwinds 会员 2022年9月9日 03:01 发表
<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&nbsp;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&nbsp;protected]</a>${test_ip} "exit" if [ $? -eq 0 ];then echo -e "\n[ Success ] IP=\"$test_ip\" password=\"${pwd_list}\" " echo "$test_ip ${pwd_list}" &gt;&gt; ${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&nbsp;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&nbsp;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)  分享
相关标签: 灌水交流
注意:本文归作者所有,未经作者允许,不得转载
5个回复
  • mango88
    2022年9月9日 04:01
    不是很清楚是什么原因,换一种方式是 OK 的 ``` for row in $(cat hostip.txt) do test_ip=$row funTstPass done ```
    0 0
  • wxf666
    2022年9月9日 04:01
    可能 sshpass 有使用你的 stdin 吧
    0 0
  • dbg
    2022年9月9日 04:01
    可能跟 IFS 有关系.提前设置下 IFS.
    0 0