Articles
Przetestuj łączność z hostami w pliku na porcie 22 za pomocą polecenia curl
On 31 grudnia, 2020 by adminChciałbym podłączyć następujące polecenie „curl” do skryptu bash i uruchomić je na pliku hosta adresów IP wyświetla wynik jako powodzenie lub niepowodzenie w pliku wyjściowym.
curl -v telnet 10.10.10.10:22
Czy to możliwe?
Odpowiedź
Używanie wbudowanego bash do sprawdzania otwartych portów może również działać:
#!/bin/bash host_file=/path/to/file.txt out_file=/path/to/out.txt while read -r ip; do if timeout 5 bash -c "cat < /dev/null >/dev/tcp/${ip}/22"; then echo -e "${ip}\tSuccess" else echo -e "${ip}\tFailure" fi >> "$out_file" done < "$host_file"
Komentarze
- Nie ' tego nie znam. Czy jest to gdzieś udokumentowane? Czy to działa również z IPv6?
- @Tomasz: To ' jest udokumentowane w podręczniku bash 3.6 Przekierowania . Nie jestem ' nie jestem pewien, czy działa z ipv6.
Odpowiedź
Nie mam jeszcze reputacji potrzebnej do komentowania postu, który twierdzi, że curl nie jest przeznaczony dla ssh ani telnet. To nie jest dokładne. Curl obsługuje wiele protokołów, w tym telnet, ssh, scp, sftp, ftps i inne.
To jest poprawna składnia curl:
curl -v telnet://127.0.0.1:22
Odpowiedź
curl
jest dla HTTP / HTTPS / FTP; nie dla SSH ani Telnet.
Chciałbym po prostu użyć netcata:
testport=22 # 22 for ssh; 23 for telnet; 80 for HTTP; etc. while read ip; do if nc -w2 -z $ip $testport; then echo $ip up else echo $ip down fi >> testresults.txt done < hostlist.txt
Dodaj komentarz