2016-10-06 4 views
2

Я пытаюсь пройти через некоторые порты для подключения через ssh. Новый для shell/bash не совсем уверен, как это сделать.Как я могу использовать grep, чтобы найти вывод команды

startingPort=xxxx 
endingPort=yyyy 

ssh(){ 
ssh [email protected] -p $startingPort 
} 

выход недопустимый порт SSH: подключиться к хосту локальный порт 8801: Соединение отклонено мне нужно, чтобы захватить это, а затем попробуйте следующий порт в диапазоне

Я пытаюсь перебирать номера портов до тех пор, пока я не увижу Аутентификация пароля Пароль:

ответ

0

попробуйте что-то подобное;

#!/bin/bash 
startingPort=10 
endingPort=40 

for ((port=$startingPort; port<=$endingPort; port++)) 
do 
ssh [email protected] -p $port 
done 
+3

Это ручка, но не разбор выходного сигнала. –

+0

Это будет работать до тех пор, пока я не найду правильный порт. Мне нужно выйти из каждой неудавшейся попытки, поэтому мне нужно захватить эту строку «ssh: подключиться к хост-порту localhost port 8801: Connection отказался» для каждого отказавшего порта, который я буду эхом >> inLogFile – Norstorin

1

Чтобы получить вывод команды ssh, вы можете проверить его с помощью «$?». В качестве примера, если вы хотите журнал ошибок:

//inside the loop (of muzido answer) 
ssh [email protected] -p $port 
if [ "$?" -ne 0 ] ; then 
    //write into logfile 
fi 
1

Спасибо muzido и Тео П; два ответных сочетания помогли мне выполнить эту задачу.

log_file=/directory/log_file.txt 
startingPort=8801 
endingPort=8899 
port='' 

sshToStuff(){ 
for ((port=$startingPort; port<=$endingPort; port++)) 
do 
if [ "$?" -ne 0 ] ; then 
    echo "`date -u`" " ssh: connect to host localhost port $port: Connection refused" >> $log_file2; 
fi 


ssh [email protected] -p $port 
done 
} 
sshToKaraf 
Смежные вопросы