Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Software>bash script - Probleme, fortgeschritten

bash script - Probleme, fortgeschritten

fluppy
fluppy29.01.0913:59
Hi,

ich habe mir 2 bash-Scripte erstellt, die jeweils ein ssh-Tunnel öffnen auf einem dyndns.
ssh verbindet dabei mittels Schlüsselauthentifizierung, welcher mit Passwort geschützt ist. Ein script öffnet für http, das zweite für samba eine verbindung.

Ich habe lange gegooglelt, jedoch keine Lösung für die folgenden Probleme gefunden:


1. ssh wird mit "sudo ssh ... -l loginname host..." verbunden. Dabei erwartet ssh immer die Passworteingabe. Wenn möglich, würde ich das passwort gern mittels Script eintragen. Geht das mit bash überhaupt?

2. Eigentlich möchte ich zwei ssh-Tunnel direkt nacheinander aufbauen, beide ssh-Verbindungen erwarten dasselbe Passwort. Wie kann ich zwei gleichzeitge Verbindungen in einem Script starten? habe schon "zeile & " probiert, wohl irgendwie falsch...?? Kann ich ein neues bash öffnen und diesem kommandos übergeben?

3. In beiden scripten gibt es teilweise identische Zeilen. Kann man diese in einem "include-Script" auslagern und wie würde man dieses einbinden?

4. Noch besser wäre eine Art miniapplikation mit buttons "connect" und "disconnect" (und ggf. eingabefeld "passwort"), welche jegliche bash kommandos im hintergrund ausführt. Ist das z.b. mit appescript realisierbar? Oder müsste ich dafür Developer Tools bemühen?


Jegliche Hilfestellung würde mir helfen. Danke im Voraus.
0

Kommentare

blubblablax
blubblablax29.01.0914:07
zu 1.: Passwörter haben in einem Script nichts zu suchen (bitte nicht an die Decke springen, ist gut gemeint).

Abhilfe: "ssh-keygen" aufrufen und Keypaar erstellen lassen. Die auf ".pub" endende Datei gehört auf den Zielrechner unter ".ssh/" des jeweiligen Users mit dem Namen "authorized_keys" (chmod 600 nicht vergessen). Gibt es die "~/.ssh/authorized_keys" bereits, dann einfach die Zeile an die bestehende Datei anhängen.

Nun kann man die SSH passwortlos mit der option "-i keyfile_name" (z.B. -i id_rsa) zur Verbindung bewegen.
„|-o-| <o> |-o-| ...The force is strong with this one...“
0
blubblablax
blubblablax29.01.0914:08
zu 2.: eigentlich sollte etwas wie
nohup $HOME/scripts/test.sh > $HOME/log/test.log 2>&1 &
an für sich funktionieren.
„|-o-| <o> |-o-| ...The force is strong with this one...“
0
blubblablax
blubblablax29.01.0914:10
3.:

my script:
#/bin/bash
#
source bla.sh
#
blub "welt"

bla.sh
#/bin/bash
#
function blub()
{
 echo "hallo "$1
}
„|-o-| <o> |-o-| ...The force is strong with this one...“
0
blubblablax
blubblablax29.01.0914:11
4.: Automator könnte eine Möglichkeit sein, ansonsten den AppleScript Editor bemühen. Hint: "do shell script"
„|-o-| <o> |-o-| ...The force is strong with this one...“
0
fluppy
fluppy30.01.0907:59
blubblablax danke für die Antworten. Dazu:

Zu 1. Habe Frage wohl ungenau formuliert. Was Du schreibst, hatte ich schon eingerichtet und funktioniert auch. Ich möchte das Passwort per Script übergeben, das wollte ich wissen. Meine ssh-Keys haben einen Passwortschutz, darauf möchte ich nicht verzichten. Das Passwort würde dann an das Script als Paramter übergeben.

Zu 2. Der letzte Teil Deiner Zeile sind für mich leider kryptische Zeichen. Könntest Duu mir genauer erklären, was genau " 2>&1 &" bewirkt?


0
fluppy
fluppy30.01.0908:04
Ach und dann habe ich noch eine Frage:

5. Kann ich einen Debian-Web-Server auf "Wake-On-Lan" einstellen? Also dass er sich einschaltet, sobald ein Netzwerkzugriff auf eth0 passiert?
0
fluppy
fluppy30.01.0909:05
Zu 5.

Wakeonlan ist ja genial. Funktionierte mit Debian auf Acer Aspire One ohne irgendwelche Konfiguration. Ich kann den AA1-Server einfach mit OSX WakeonLan Tool anschalten!

0
fluppy
fluppy30.01.0909:18
Zu 5.

Jetzt würde ich gern, dass WakeOnLan auch über den ssh-Tunnel funktioniert. Bisher wird Option g für wakeonlan benutzt:

ethtool eth0
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Full 
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Full 
        Advertised auto-negotiation: Yes
        Speed: 100Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: pumbg
        Wake-on: g
        Current message level: 0x00000033 (51)
        Link detected: yes

Die folgenden Optionen habe ich:
p  Wake on phy activity
  u  Wake on unicast messages
  m  Wake on multicast messages
  b  Wake on broadcast messages
  g  Wake on MagicPacket(tm)

Am besten wäre es natürlich, wenn der Server bei simplen http-Zugriff aufwachen würde...
0
blubblablax
blubblablax30.01.0922:36
Ich fange mal hinten an: WakeOnLan (stammt übrigens von AMD) ist wie der Name schon sagt eine LAN-Technologie.

Prinzipiell ist dazu zu wissen, dass WOL ein Paket (verbindungslos) an eine Ethernet-Karte schickt. Dabei ist der Rechner an sich aus, antwortet somit nicht auf die höheren TCP/IP Protokolle. Der Rechner hat im WOL Modus keine gültige IP-Adresse und kann demnach ohne Sonderbedingungen (s.u.) nicht auf Anfragen aus dem Internet antworten. WOL ist ein Layer2-Protokoll, dass Pakete an die Mac-Adresse der Netzwerkkarte schickt.

Sonderbedingung: Es gibt WOL-Dienste als Web-Interface im Internet, die implizit davon ausgehen, dass im Gateway-Router und den Switchen die Mac-Adresse des Zielrechners gepuffert wird. Damit funktioniert WOL aus dem Internet oft aber es ist nicht garantiert und kann prinzipbedingt schiefgehen.

Tipp: Gateway/Server im gleichen Subnetz wie die Zielmaschine mit den WOL-Tools bestücken (ich habe bei mir ein PERL-Script laufen) und darüber die Zielmaschine starten.

Server per HTTP-Zugriff starten ginge theopraktisch auch, wenn der Gateway im Userspace filtern kann (betriebssystemabhängig). So z.B. kann man für ein gering belastetes Privatnetz durchaus bei jedem TCP SYN Paket auch noch ein WOL an den Server schicken lassen.
„|-o-| <o> |-o-| ...The force is strong with this one...“
0
blubblablax
blubblablax30.01.0922:44
2>&1

Die Shell kennt 3 wesentliche Streams: stdin, stdout und stderr

stdin kann man mit <aha.txt umleiten, stdout per >output.txt und stderr für Fehlermeldungen mit 2>output.txt

2>&1 bedeutet, stderr mit in stdout umzuleiten
„|-o-| <o> |-o-| ...The force is strong with this one...“
0
blubblablax
blubblablax30.01.0922:49
Ich bezweifele ein wenig den Nutzen von SSH-keys mit Passphrase, wenn letztere mit im Skript steht aber sei es drum.

Für solche Fälle von zentraler SSH-Passwortverwaltung ist der "ssh-agent" vorgesehen. Da ich ihn selbst momentan nicht verwende, kann ich auf die Schnelle auch kein HOWTO zaubern.
„|-o-| <o> |-o-| ...The force is strong with this one...“
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.