#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