Strona 1 z 1

łączenie z telnetem

: 03 sty 2009, 21:54
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

Odp: łączenie z telnetem

: 03 sty 2009, 22:41
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 :)

Odp: łączenie z telnetem

: 04 sty 2009, 07:22
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 :)

Odp: łączenie z telnetem

: 04 sty 2009, 12:22
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.

Odp: łączenie z telnetem

: 04 sty 2009, 12:51
autor: leon1313
a jakie komendy wpisałeś do /tmp/fifo ?

Odp: łączenie z telnetem

: 04 sty 2009, 13:01
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 :/

Odp: łączenie z telnetem

: 04 sty 2009, 13:58
autor: leon1313
przecież działa!!!
wpisz do /tmp/fifo np:

Kod: Zaznacz cały

pwd; ls -la

Odp: łączenie z telnetem

: 04 sty 2009, 16:11
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 ???

Odp: łączenie z telnetem

: 04 sty 2009, 16:29
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.

Odp: łączenie z telnetem

: 05 sty 2009, 02:01
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

Odp: łączenie z telnetem

: 05 sty 2009, 20:32
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!!!!!!

Odp: łączenie z telnetem

: 18 sie 2009, 15:19
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.