.titleBar { margin-bottom: 5px!important; }

NetCat Mehrere Befehle mit einer Verbindung senden

Dieses Thema im Forum "Freetz" wurde erstellt von voipfoner, 1 Feb. 2009.

  1. voipfoner

    voipfoner Neuer User

    Registriert seit:
    9 Dez. 2007
    Beiträge:
    14
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hab grad nen Problem mit NetCat bzw. komme an der stelle grad nicht weiter
    Ich möchte gerne mehrere Telnet Befehle an ein Gerät schicken, aber mit EINER Verbindung.

    Ist es denn möglich in etwas sowas hier zu schreiben?
    Code:
    nc 192.168.x.x 1234 Befehl1 | Befehl2 | Befehl3
    Ich versuche das ganze grad irgendwie auf der Commandline, später soll es in eine ShellDatei ausgelagert werden.

    Ich möchte inprinzip in einer Zeile die Verbindung mit dem Gerät öffnen, die Befehle senden lassen und dann wieder schließen.

    So ist es von Hand alles ganz gut
    Code:
    nc 192.168.x.x 1234
    Befehl1
    Befehl2
    befehl3
    exit
    Aber sowas kann man doch nicht in eine Shell Datei eingeben oder?
    Wenn ja dann wäre das natürlich auch ok.



    Wie kommts, dass ich Netcat auf meiner Kiste habe?
    hab garnicht das Paket angewählt, oder ist das nur ne abgespeckte nc Version?
     
  2. elmicha

    elmicha Neuer User

    Registriert seit:
    24 Aug. 2008
    Beiträge:
    94
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    Ort:
    Bonn
    Wenn ich dich richtig verstanden habe, möchtest Du nicht die Ausgabe von netcat an Befehl1 senden (und dessen Ausgabe an Befehl 2 und dessen Ausgabe an Befehl 3), sondern Du möchtest die Befehle an netcat senden, damit netcat die Befehle an 192.168.x.x senden kann?

    Falls ja, sollte es so gehen:

    Code:
    echo "Befehl1
    Befehl2
    Befehl3" | netcat 192.168.x.x 1234
     
  3. voipfoner

    voipfoner Neuer User

    Registriert seit:
    9 Dez. 2007
    Beiträge:
    14
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Besten Dank, genau das meinte ich....aber...
    in der normalen händischen CommandLine arbeitet er die Befehle ruckzuck hintereinander ab, alles so wie's sein soll.
    Aber wenn ich nun genau das gleiche Script in das Shellscript schreibe und ausführe arbeitet er nur die erste Aktion ab, die darauffolgenden lässt er liegen.
    Aber im CommanLine werden jeweils 3 Rückgaben generiert, als ob alle ohne Fehler ausgeführt wurden. Nur fehlen eben die restlichen Befehle.
    Komisch.
     
  4. bababong

    bababong Neuer User

    Registriert seit:
    19 Sep. 2007
    Beiträge:
    28
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    also so müsste es gehen:

    netcat IP PORT << 'EOF'
    befehl1
    befehl2
    befehl3
    ...
    EOF

    greetz baba
     
  5. cando

    cando Aktives Mitglied

    Registriert seit:
    28 Nov. 2008
    Beiträge:
    1,080
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Du kannst auch eine Datei mit befehlen schreiben und dann per pipe diese auf netcat senden


    Code:
    netcat < datei.txt
    oder du schreibst einfach mehrere netcat hintereinander

    Code:
    netcat befehl1
    netcat befehl2
    netcat befehl3
     
  6. voipfoner

    voipfoner Neuer User

    Registriert seit:
    9 Dez. 2007
    Beiträge:
    14
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hmmm alles schon sehr gut...
    @ bababong jetzt funktionierts auch aus dem Shellscript :)
    @ cando bringt mir leider nicht allzuviel, da die Befehle variabel sein müssen.

    ich bräuchte in prinzip sowas wie unten schon beschrieben @bababong, nur Variabel, nach meinen Vorstellungen so.

    Code:
    COMMAND_VAR[]="Befehl1"
    $COMMAND_VAR[]="Befehl2"
    $COMMAND_VAR[]="Befehl3"
    
    netcat IP PORT << $COMMAND_VAR

    Man soll im Programm an verschiedenen Stellen einen Befehl in das Array schieben können, bis man, nennen wir's mal callOut() aufrufe und dann alle Befehle im Array durch eine Verbindung im Netcat geschickt werden.
    Ist es denn möglich einfach ein Element einen array ohne indexnummer (also fortlaufend) hinzuzufügen?

    Zu dem netcat Befehl, ist es auch möglich anzugeben, das er bspw. nach jedem abgearbeiteten Befehl ne kurze Pause 0.2 Sek bspw. macht, ohne das das Endgerät ein sleep beherscht? Hab dazu nichts in der netcat doku gefunden.
     
  7. cando

    cando Aktives Mitglied

    Registriert seit:
    28 Nov. 2008
    Beiträge:
    1,080
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    wie wärs denn, wenn du deine variablen befehle mit

    Code:
    echo "VariablerBefehl" >> datei.txt
    ...
    
    absetzt und wenn du glaubst, dass du fertig bist ein:

    Code:
    netcat < datei.txt
    machst. Wäre doch genau was Du willst, oder?
     
  8. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Wenn Du dynamische Befehle brauchst, ist das Schreiben in eine temporäre Datei vielleicht wirklich die einfachste Lösung.

    Ansonsten solltest Du Dich etwas in die Verwendung der Shell einlesen.
     
  9. voipfoner

    voipfoner Neuer User

    Registriert seit:
    9 Dez. 2007
    Beiträge:
    14
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Habs grad mal ausprobiert...Ich glaube jetzt hab ich das was ich wollte :))
    Und wirklich umständlich ist es mit einer kleinen Temp Datei auch nicht.

    Besten dank an euch :D

    Nur eines wäre noch recht intressant, ist denn netcat (nc) schon per default mit freetz auf der Box?
    Hab nämlich da nix ausgewählt.
     
  10. bababong

    bababong Neuer User

    Registriert seit:
    19 Sep. 2007
    Beiträge:
    28
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Code:
    /usr/bin # ls -l /usr/bin/nc
    lrwxrwxrwx    1 root     root           17 Nov 21  2008 /usr/bin/nc -> ../../bin/busybox
    
    scheint bestandteil der busybox zu sein :)
     
  11. crazyPower

    crazyPower Neuer User

    Registriert seit:
    2 Juli 2005
    Beiträge:
    33
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    so gehts wohl auch:

    (echo "mesg test" && echo quit) | nc -w 5 server port
     
  12. cando

    cando Aktives Mitglied

    Registriert seit:
    28 Nov. 2008
    Beiträge:
    1,080
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ich glaube, jetzt haben wir die shell so ziemlich durchexerziert ;)