J'essaie de créer un script pour tester s'il est possible de se connecter via telnet. Je ne veux pas vraiment me connecter; par conséquent, attendre n'est pas nécessaire. Je veux juste voir si je peux obtenir une invite de connexion. Cela se fait à partir d'un système Linux, j'ai donc essayé d'utiliser nc
:
nc 192.168.10.5 23 -w 1 | grep -q login
if [ $? -eq 1 ]
then
echo "console is down"
fi
Le problème est que cela provoque le verrouillage de ma console. Il semble que -w
la connexion ne soit pas vraiment interrompue.
J'ai également essayé d'utiliser telnet mais je ne parviens pas à rompre la connexion depuis le script. En essayant
\echo "\035" | telnet 192.168.10.5
s'interrompt avant de recevoir une invite de connexion.
shell
shell-script
telnet
netcat
rleon
la source
la source
Réponses:
Bash fournit des pseudo-appareils que vous connaissez probablement comme
extrait de la page de manuel de Bash/dev/null
. Cependant, il existe d'autres périphériques tels que/dev/tcp
et/dev/udp
pour tester les connexions réseau, que vous pouvez également utiliser dans les scripts Bash.Exemple
Ici, je teste la connexion à un hôte de mon domaine nommé skinner et je vois si je peux me connecter à son port 22.
REMARQUE: le port 22 est pour SSH, pour le port 23 d'utilisation telnet.
Super alors essayons un non-port:
Eh bien, cela fonctionne, mais c'est une sortie terriblement moche. Ne pas s'inquiéter. Vous pouvez exécuter le
echo > /dev/tcp/...
sous-shell et rediriger toutes les sorties vers/dev/null
pour le nettoyer un peu. Voici le modèle que vous pouvez utiliser dans vos scripts shell:la source
telnet
, alors cela fonctionne par défaut sur le port 23, donc là où slm a utilisé 22 et 223, utilisez 23.# telnet 192.168.10.5 Trying 192.168.10.5... Connected to 192.168.10.5 (192.168.10.5). Escape character is '^]'. Connection closed by foreign host.
# cat < /dev/tcp/192.168.10.12/23
me donne une invite de connexion mais je ne suis pas en mesure d'en sortir.# cat afile ^]
après avoir couru, il fait juste écho à la pauseafile
. Je joue toujours avec mais je sens que j'y suis presque.Vous êtes sur la bonne voie en utilisant
nc
, mais si vous voulez vraiment tester si vous pouvez établir la connexion, utilisez le-z
commutateur nc :la source
nc
s'agit-il?nc
.Je sais que la réponse est un peu tardive, mais je cherchais comment faire et l'utilisation de nc n'était pas une option pour des raisons de sécurité, alors voici si cela peut aider quelqu'un.
Ce qui manquait dans votre écho initial était le commutateur -e:
Et une nouvelle ligne + la commande quit pour quitter telnet après la déconnexion. En tant que tel:
Évidemment, la même chose fonctionnera si vous utilisez un style de bloc if et évaluez $? comme vous l'avez fait au départ:
Pendant que nous y sommes, en ce qui concerne nc, cela dépend de la saveur de nc que vous avez (gnu ncat vs nmap-ncat). Gnu aura le commutateur -z:
tandis que l'autre ne le fera pas et vous devrez diriger une ligne vide vers votre nc pour ne pas être coincé:
la source
exécuter
nc -z 192.168.10.5 23
dans l'invite de commande ou créer un script bash pour exécuter cette commande.Il renvoie l'instruction ci-dessous si la connexion réussit.
Connexion au port 192.168.10.5 23 [tcp / *] réussie!
la source