łączenie z telnetem

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
delcadro
Sędziwy Jeż
Sędziwy Jeż
Posty: 63
Rejestracja: 11 wrz 2006, 00:13
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

łączenie z telnetem

Post autor: delcadro »

jak zrobić prosty skrypt do połączenia z telnetem.
Mianowicie

Kod: Zaznacz cały

#!/bin/bash
telnet "jakieś IP"
"tu podaje login wpisane już do skryptu"
"tu podaje hasło wpisane już do skryptu"
"polecenie1" "enter"
sleep 20 "enter"
"polecenie2" "enter"
exit
Po ostatnich poleceniach raczej nie musi mi zaklepywać entera, ale jak "wrzucić" login i hasło ??

PS koniecznie musi to być telnet
::::::::::: Delcadro::::::::::::
Awatar użytkownika
MrRobby
Przyjaciel
Przyjaciel
Posty: 398
Rejestracja: 21 lip 2006, 20:26
Płeć: Mężczyzna
Wersja Ubuntu: 18.04
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

Odp: łączenie z telnetem

Post autor: MrRobby »

Koniecznie musisz używać telnetu?? Można się obejść bez tego typu działań stosując ssh i klucze. No chyba że koniecznie musi to być telnet :)
Pozdrawiam MrRobby

BTC: 1AVuTQRLNC2Ut2cd2pekWXZhhc1rzBbXNr
LTC: Lei3u3qCTaHrBnabG6VugeUeTVn8TsLTXe
Awatar użytkownika
leon1313
Zakręcona Traszka
Zakręcona Traszka
Posty: 668
Rejestracja: 02 sty 2006, 19:35
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: KDE Plasma
Architektura: x86

Odp: łączenie z telnetem

Post autor: leon1313 »

Znalezione gdzieś w zakamarkach - nie mam nawet na czym sprawdzić, jeśli będzie złe, to niech mod usunie.

Kod: Zaznacz cały

 
read user;
read host;
stty -echo; read pass; stty echo;

       sleep 2
        echo $pass
        sleep 5
        echo exit
        done | telnet -l $user $host
\\MrRobby:Myślisz że mod ma gdzie sprawdzać telneta? :)
\\ edit by leon1313:Czasami mam przebłyski myślenia, niezbyt zbieżnego z waszym :)
"Poza tym dostałeś PLONKa i zabraniam Ci pisać na te grupe!!! Powiedziałem PLONK i sie zamknij i nawet nie knuj rzeby mi odpisywać! Zabraniam!!!"
delcadro
Sędziwy Jeż
Sędziwy Jeż
Posty: 63
Rejestracja: 11 wrz 2006, 00:13
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: łączenie z telnetem

Post autor: delcadro »

Kurcze i nie działa.
Podmieniłem w skrypcie login,host i pass na właściwe a terminal nie zwraca nic :/

Znalazlem coś takiego, ale z tym też jest problem:

Kod: Zaznacz cały

#!/bin/sh

# Date: Thu, 3 Feb 2005

# Shell script to start a connection to another host using telnet and
# keep the connection "alive". While the telnet session is running,
# this shell script will also be running.
# It uses redirection operators (pointing to the current TTY to avoid
# blocking 'stdin'), and a FIFO (pipe) to communicate the reader
# program (cat) with the telnet program.
# To exit you have to end the telnet process ('quit' command) and
# then input an ENTER or ^D (EOF) character to 'cat' (so it ends).

# Example values are prefixed with "example-" (change them to real ones).

FIFO="/tmp/fifo"
HOST="10.0.0.138"
USER="moj_login"
PASS="moje_haslo"
PORT=""    # leave empty for default (23)
TTY=`tty`

# To communicate telnet and TTY.
mkfifo $FIFO

# Start telnet, reading from the FIFO and outputting everything to
# the current TTY. Wait 3 seconds, log in, wait 3 seconds and run
# cat, that reads from the TTY and outputs to the FIFO (that is
# read by telnet).

telnet -l $USER $HOST $PORT < $FIFO 2>&1 > $TTY &
sleep 3; echo $PASS > $FIFO; sleep 3;
cat > $FIFO < $TTY

# Clean up (delete FIFO).
rm $FIFO

# Exit.
exit 0

niestety wyskakuje taki błąd:

Kod: Zaznacz cały

mkfifo: nie można utworzyć potoku `/tmp/fifo': File exists
Trying 10.0.0.138...
Connected to 10.0.0.138.
Escape character is '^]'.
Connection closed by foreign host.
::::::::::: Delcadro::::::::::::
Awatar użytkownika
leon1313
Zakręcona Traszka
Zakręcona Traszka
Posty: 668
Rejestracja: 02 sty 2006, 19:35
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: KDE Plasma
Architektura: x86

Odp: łączenie z telnetem

Post autor: leon1313 »

a jakie komendy wpisałeś do /tmp/fifo ?
"Poza tym dostałeś PLONKa i zabraniam Ci pisać na te grupe!!! Powiedziałem PLONK i sie zamknij i nawet nie knuj rzeby mi odpisywać! Zabraniam!!!"
delcadro
Sędziwy Jeż
Sędziwy Jeż
Posty: 63
Rejestracja: 11 wrz 2006, 00:13
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: łączenie z telnetem

Post autor: delcadro »

Żadnych. Plik pewnie się utworzył kiedy probowałem skrypt uruchomić z prawami roota.
Usunąłem ten plik /tmp/fifo
i teraz tylko taki komunikat wyskakuje:

Kod: Zaznacz cały

Trying 10.0.0.138...
Connected to 10.0.0.138.
Escape character is '^]'.
Connection closed by foreign host.
więc i tak kicha :/

Widze że ten skrypt tylko jako root moge poprawnie uruchomić bez błędów fifo, ale i tak on nie działa :/
::::::::::: Delcadro::::::::::::
Awatar użytkownika
leon1313
Zakręcona Traszka
Zakręcona Traszka
Posty: 668
Rejestracja: 02 sty 2006, 19:35
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: KDE Plasma
Architektura: x86

Odp: łączenie z telnetem

Post autor: leon1313 »

przecież działa!!!
wpisz do /tmp/fifo np:

Kod: Zaznacz cały

pwd; ls -la
"Poza tym dostałeś PLONKa i zabraniam Ci pisać na te grupe!!! Powiedziałem PLONK i sie zamknij i nawet nie knuj rzeby mi odpisywać! Zabraniam!!!"
delcadro
Sędziwy Jeż
Sędziwy Jeż
Posty: 63
Rejestracja: 11 wrz 2006, 00:13
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: łączenie z telnetem

Post autor: delcadro »

Faktycznie chyba działa. Sprawdzę jak bedę w domu.
Tak na wszelki wypadek spytam się bo teraz nie mam jak sprawdzić:

po

Kod: Zaznacz cały

cat > $FIFO < $TTY
wpisać kolejne polecenia już będąc podłaczonym telnetem ???
::::::::::: Delcadro::::::::::::
Awatar użytkownika
leon1313
Zakręcona Traszka
Zakręcona Traszka
Posty: 668
Rejestracja: 02 sty 2006, 19:35
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: KDE Plasma
Architektura: x86

Odp: łączenie z telnetem

Post autor: leon1313 »

Słuchaj - bo ja już nie za bardzo łapie, o co chodzi: chcesz wykonać zdalnie komendę na innym serwerze przy pomocy telnetu , uzyskać wyjście na swojej konsoli i automatycznie wylogować czy po prostu zalogować się telnetem na inną maszynę i dopiero wydawać polecenia ?
Poza tym telnet jest niewdzięczny - jeśli masz możliwość, przestaw się na ssh.
"Poza tym dostałeś PLONKa i zabraniam Ci pisać na te grupe!!! Powiedziałem PLONK i sie zamknij i nawet nie knuj rzeby mi odpisywać! Zabraniam!!!"
delcadro
Sędziwy Jeż
Sędziwy Jeż
Posty: 63
Rejestracja: 11 wrz 2006, 00:13
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: łączenie z telnetem

Post autor: delcadro »

Chodzi o to, że muszę to wykonać telnetem.
Chodzi o automatyczne zalogowanie bez mojej ingerencji i wykonanie kilku komend.
Wszystko automatem. Nie mogę niestety użyć niczego innego niż telnet.
Na zdalnej maszynie muszę po zalogowaniu się przez telnet wykonać 3 polecenia zatwierdzone enterem. To tyle :).
Nie mam możliwości bycia przy tym - czyli wypełnianiu pola login i hasło. Muszę je gdzieś wpisać wcześniej. Kwestie bezpieczeństwa w tym przypadku schodzą na dalszy plan.
Niestety polecenia nie działają jeśli je dodam poniżej

cat > $FIFO < $TTY
::::::::::: Delcadro::::::::::::
Awatar użytkownika
leon1313
Zakręcona Traszka
Zakręcona Traszka
Posty: 668
Rejestracja: 02 sty 2006, 19:35
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: KDE Plasma
Architektura: x86

Odp: łączenie z telnetem

Post autor: leon1313 »

nie wiem, czy stanowi to rozwiązanie twojego problemy, ale znalazłem moduł perlowy pomocny w tym przypadku:
http://search.cpan.org/~jrogers/Net-Tel ... /Telnet.pm

Here's an example that prints who's logged-on to the remote host sparky. In addition to a username and password, you must also know the user's shell prompt, which for this example is bash$

Kod: Zaznacz cały

 use Net::Telnet ();
    $t = new Net::Telnet (Timeout => 10,
                          Prompt => '/bash\$ $/');
    $t->open("$remote_host");
    $t->login($username, $passwd);
    @lines = $t->cmd("who");
    print @lines;
p.s gdybyś dostał Timeout przy promt (timed-out waiting for command prompt at ./ttelnet.pl line 8), zmień na

Kod: Zaznacz cały

Prompt => '/\$ $/i');
SPRAWDZAŁEM - DZIAŁA!!!!!!
"Poza tym dostałeś PLONKa i zabraniam Ci pisać na te grupe!!! Powiedziałem PLONK i sie zamknij i nawet nie knuj rzeby mi odpisywać! Zabraniam!!!"
Ringabulina
Piegowaty Guziec
Piegowaty Guziec
Posty: 1
Rejestracja: 18 sie 2009, 14:34
Płeć: Kobieta
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME

Odp: łączenie z telnetem

Post autor: Ringabulina »

Odświeżam temat, bo z powyższych wskazówek nic mi nie działa.
Jak stworzyć skrypt do automatycznego logowania przez telnet.
Normalnie loguję się poprzez wpisanie w terminalu: telnet 192.168.4.1 218, a następnie podaję użytkownika i hasło.
A jak zrobić żeby skrypt robił to za mnie.
W windzie jest do tego prosta komenda typu: ECHO.handler.SendKeys ... , która wstawia użytkownika i hasło po pojawieniu się pytania o nie;
a jak to zrobić w ubuntu?
To znaczy jak ma wyglądać skrypt po tym:

Kod: Zaznacz cały

#!/bin/sh
telnet 192.168.4.1 218
który tylko powoduje połączenie z hostem. A dalej trzeba wpisywać użytkownika i hasło z palca, a chcę by robił to automatycznie.
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 8 gości