Как я могу использовать grep для поиска выходных данных command

#bash #shell #grep

#bash #оболочка #grep

Вопрос:

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

 startingPort=xxxx
endingPort=yyyy

ssh(){
ssh admin@localhost -p $startingPort
}
  

вывод недопустимого порта — ssh: подключение к локальному хост-порту хоста 8801: отказано в подключении
Мне нужно захватить это, а затем попробовать следующий порт в диапазоне

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

Ответ №1:

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

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

Ответ №2:

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

 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 admin@localhost -p $port
done
}
sshToKaraf
  

Ответ №3:

попробуйте что-то вроде этого;

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

for (( port=$startingPort; port<=$endingPort; port   ))
do
ssh admin@localhost -p $port
done
  

Комментарии:

1. Это обрабатывает часть цикла, но не синтаксический анализ выходных данных.

2. Это будет работать до тех пор, пока я не найду правильный порт. Мне нужно выходить из системы при каждой неудачной попытке, поэтому мне нужно записать эту строку «ssh: подключение к порту локального хоста 8801: отказано в подключении» для каждого отклоненного порта, который я повторю>> intoLogFile