Estou tentando criar um script para testar se é possível fazer login via telnet. Eu realmente não quero fazer login; portanto, não é necessário esperar. Eu só quero ver se consigo obter um prompt de login. Isso está sendo feito em um sistema Linux, então eu tenho tentado usar nc
:
nc 192.168.10.5 23 -w 1 | grep -q login
if [ $? -eq 1 ]
then
echo "console is down"
fi
O problema é que isso está causando o bloqueio do meu console. Parece que o -w
realmente não está descartando a conexão.
Também tentei usar o telnet, mas não sou capaz de interromper a conexão no script. Tentando
\echo "\035" | telnet 192.168.10.5
quebras antes de eu receber uma solicitação de login.
shell
shell-script
telnet
netcat
rleon
fonte
fonte
Respostas:
O Bash fornece pseudo-dispositivos com os quais você provavelmente já conhece
trecho da página de manual do Bash/dev/null
. No entanto, existem outros dispositivos, como/dev/tcp
e/dev/udp
para testar conexões de rede, que você também pode usar nos scripts do Bash.Exemplo
Aqui, estou testando a conexão com um host no meu domínio chamado skinner e vendo se consigo conectar à sua porta 22.
NOTA: A porta 22 é para SSH, para telnet use a porta 23.
Ótimo, então vamos tentar uma não porta:
Bem, isso funciona, mas é uma saída terrivelmente feia. Não se preocupe. Você pode executar o
echo > /dev/tcp/...
subshell e redirecionar toda a saída/dev/null
para limpá-la um pouco. Aqui está o padrão que você pode usar em seus scripts de shell:fonte
telnet
, então, por padrão, é executado na porta 23; portanto, onde o slm usou 22 e 223, use 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 dá um prompt de login, mas não consigo sair dele.# cat afile ^]
depois de executar isso, está apenas ecoando a pausa paraafile
. Ainda estou brincando, mas sinto que estou quase lá.Você está no caminho certo
nc
, mas se realmente deseja apenas testar se pode estabelecer a conexão, use o-z
switch da nc :fonte
nc
é essa?nc
.Eu sei que a resposta está um pouco atrasada, mas eu estava pensando em como fazer isso e usar o nc não era uma opção por razões de segurança, então aqui está, se ele puder ajudar alguém.
O que estava faltando no seu eco inicial era a opção -e:
E uma nova linha + o comando quit para sair do telnet após desconectar. Assim sendo:
Obviamente, o mesmo funcionará se você usar um estilo de bloco if e avaliar $? como você fez inicialmente:
Enquanto estamos nisso, no que diz respeito a nc, depende de qual sabor de nc você tem (gnu ncat vs nmap-ncat). O GNU terá a opção -z:
enquanto o outro não e você terá que canalizar uma linha vazia para o seu nc para não ficar preso:
fonte
execute
nc -z 192.168.10.5 23
no prompt de comando ou crie um script bash para executar este comando.Retorna a instrução abaixo se a conexão for bem-sucedida.
A conexão à porta 192.168.10.5 23 [tcp / *] foi bem-sucedida!
fonte