Telnet Verbindung per netcat

Hallo.
Ich habe ein Problem, und zwar habe ich einen Linux-Router (FLI4L)
und einen Linux Fileserver.
Ich möchte per skript auf meinem Linux Router den Fileserver herunterfahren können.

Ich habe das mit telnet versucht, allerdings habe ich herausgefunden, dass telnet wohl nicht skriptfähig ist. (ich kenne mich da nicht so aus)

Dann wurde mir gesagt, dass netcat eine skriptfähige alternative wäre.
Schön und gut, aber das netcat auf meinem FLI4L hat die option "-t" nicht.

Jetzt wurde mir gesagt, dass ich da ein skript schreiben könnte, damit die vorherigen abmachungen zwischen dem Telnet auf dem Server und dem netcat auf dem router beantwortet werden.

Oder gibt es eine ander Möglichkeit?

Im Prinzip möchte ich per Skript, das auf dem Fli läuft und meinen Suse 8.0 Server herunterfährt.

Vielen Dank im voraus.
Gruß
Konrad.
 
expect wäre da auch ne möglihckeit.....aber warum nimmst du nicht ssh?? da kannst du mit "key authentication" arbeiten und musst so nicht das pass irgendwo abspeichern. des weiteren ist dann alles verschlüsselt.
 
Hm, ich hab da nicht viel Erfahrung, mit SSH hab ich noch nix gemacht.
Ich bin auch der Meinung, dass ich das intern nicht brauche,
aber wenn es geht, würde ich es schon so machen.

Kannst Du mir da mal ein Beispiel-Script schicken oder so?

Danke.
 
Ich würde hierfür ssh verwenden. Mittels "ssh <benutzer>@<IP-Adresse> <Befehl>" lässt sich das ganze komfortabel und sicher lösen.

Beispiel: ssh root@192.168.0.1 init 6

Allerdings gibt es hierbei noch eine Passwortabfrage. Das kannst du jedoch per publik key bzw. Hostbasierender Authentifizierung lösen.
 
Code:
Client:
Win:
Putty wirft einzeilerscript an welches den unter anderem `netcat fileserver 65001` ausfuehrt und den Router beendet.
ROUTER:
echo "password" | netcat fileserver 65001
sleep 2
halt
Fileserver:
netcat -e dein_runterfahrenprogramm -p 65001


dein_runterfahrenprogramm koennte folgendes enthalten
if [ $password = "password" ] 
then
/sbin/halt
fi

Natuerlich waere eine Schleife viel schoener.
netcat -e dein_runterfahrenprogramm -p 65001 wird z.B mittels eines Startscriptes gestartet.

Klar das hier sieht alles ziemlich zusammengeworfen aus.
Ich werde wenn es dich interessiert das ganze ein wenig zusammenfassen.

mfg p2k
 
poiin2000

Das hört sich gut an, aber es funktioniert nicht.

Wenn ich auf meinem Fileserver mache

netcat -e "mein_runterfahrprogramm" -p 65001

dann kommt als Antwort sofort nc -h for help

????

Danke.
Gruß
Konrad.
 
Ich schreibe an einer Zusammenfassung.
Wird noch 1-2 Tage dauern ...

Kommentar am Rande(){
nc : du musst netcat in diesem Fall wahrscheinlich selber kompilieren.
}
Gruss p2k
 
Ja du hast recht.
In meiner Zusammenfassung habe ich dies Berücksichtigt.
Code:
/bin/bash -c '/usr/local/bin/netcat -p 65000 -l -e /etc/halt.sh > /dev/null &'

mfg p2k
 
Hm.

Also, ich muss das Netcat auf meinem Suse 8.0 Server neu kompilieren,
damit ich die Option "-e" verwenden kann.
Da habe ich irgendwie nicht so richtig die Checkung,
wo finde ich dazu den Quellcode und wie mach ich das?

Danke soweit mal.

Vielleicht werde ich ja aus der Zusammenfassung irgendwie schlauer.

Gruß
Konrad.
 
Original von Conair0001
Hm.

Also, ich muss das Netcat auf meinem Suse 8.0 Server neu kompilieren,
damit ich die Option "-e" verwenden kann.
Da habe ich irgendwie nicht so richtig die Checkung,
wo finde ich dazu den Quellcode und wie mach ich das?

Danke soweit mal.

Vielleicht werde ich ja aus der Zusammenfassung irgendwie schlauer.

Gruß
Konrad.

1. Google: nach einem netcat oder nc110.tar.gz suchen.
2. In einem Verzeichnis deiner Wahl abspeichern, entpacken.
3. README lesen und das Makefile abändern.
4. Den berüchtigten Dreischritt ./configue && make && make install.

Viel Spass beim spielen :D
 
Das mit dem ssh hab ich jetzt auch mal probiert.
Ja, da kommt eine Passwortabfrage,
kann mir jemand sagen, wie ich das mit dem Public Key mache?

Danke.
 
http://www.openbsd.org/cgi-bin/man.cgi?query=sshd

SSH_KNOWN_HOSTS FILE FORMAT
The /etc/ssh/ssh_known_hosts and $HOME/.ssh/known_hosts files contain
host public keys for all known hosts. The global file should be prepared
by the administrator (optional), and the per-user file is maintained au-
tomatically: whenever the user connects from an unknown host its key is
added to the per-user file.

Each line in these files contains the following fields: hostnames, bits,
exponent, modulus, comment. The fields are separated by spaces.

Hostnames is a comma-separated list of patterns (`*' and `?' act as wild-
cards); each pattern in turn is matched against the canonical host name
(when authenticating a client) or against the user-supplied name (when
authenticating a server). A pattern may also be preceded by `!' to indi-
cate negation: if the host name matches a negated pattern, it is not ac-
cepted (by that line) even if it matched another pattern on the line.

Bits, exponent, and modulus are taken directly from the RSA host key;
they can be obtained, e.g., from /etc/ssh/ssh_host_key.pub. The optional
comment field continues to the end of the line, and is not used.

Lines starting with `#' and empty lines are ignored as comments.

When performing host authentication, authentication is accepted if any
matching line has the proper key. It is thus permissible (but not recom-
mended) to have several lines or different host keys for the same names.
This will inevitably happen when short forms of host names from different
domains are put in the file. It is possible that the files contain con-
flicting information; authentication is accepted if valid information can
be found from either file.

Note that the lines in these files are typically hundreds of characters
long, and you definitely don't want to type in the host keys by hand.
Rather, generate them by a script or by taking /etc/ssh/ssh_host_key.pub
and adding the host names at the front.
 
Hallo poiin2000

Ich hab es so gemacht, wie Du es geschrieben hast und supigeil es funktioniert.

Dankeschön, Du hast Dir ja schon ganz schön mühe gegeben.

Gruß
Konrad.
 
Ich hatte einen kleinen Fehler

im Bereich

Code:
/usr/bin/lastlog | /bin/awk '/^halt/{print "echo \"Server wurde von "$3" am $(date \"+%A den %d.%m.%Y %T\") runtergefahren\""}'|/bin/bash|/bin/sed -f ~halt/sed.skript|tee ~serverhalt/halt.log

habe ich mit
Code:
tee ~serverhalt/halt.log
immer die Logdatei umgeschrieben.

Der Fix ist einfach und sieht so aus.

Code:
tee -a ~serverhalt/halt.log

Somit sieht das gesamte script
----------
~serverhalt/.profile
----------
Code:
if [ $(nmap -T4 -sP 192.168.100.11 | awk '/Host seems down/'|wc -l) -eq "0" ] ; then
echo -e "Stope Server Slave \c"
echo "halt" | netcat 192.168.100.11 65000 &
until [ `nmap -T5 -sP 192.168.100.11 | awk '/Host seems down/'|wc -l` -eq "1" ]; do echo -e ".\c" ; done
echo -e " erledigt\n"
fi
if [ $(nmap -T5 -sP 192.168.100.11 | awk '/Host seems down/'|wc -l) -eq "0" ] ; then
echo "Netzwerk Error. Server Slave nicht abgeschaltet"
fi
echo -e "\nSchalte Server Master ab\n"
chmod 777 ~halt/halt.log
/usr/bin/lastlog | /bin/awk '/^halt/{print "echo \"Server wurde von "$3" am $(date \"+%A den %d.%m.%Y %T\") runtergefahren\""}'|/bin/bash|/bin/sed -f ~halt/sed.skript|tee -a ~serverhalt/halt.log
echo -e "\n\n" >> ~serverhalt/halt.log
chmod 000 ~serverhalt/halt.log
echo -e "\nLogs geschrieben\n"
sudo /sbin/shutdown -h now
exit

so aus.

Ich möchte mich für diesen doch Fatalen Fehler der mir hier unterlaufen ist entschuldigen.

p2k
 
Zurück
Oben