SSH möglich.

Dann wartet das skript auf den Netzwerk Timeout. Das dauert gefühlt ne Ewigkeit. Stimmt.

Dieses Verhalten kenne ich bisher nur von den eingeschränkten Rechten. Wenn du die Zeit erübrigen kannst, dann versuch doch mal einen SSH Server auf deinem Windows-Server zu installiergen (freesshd zum beispiel). mit Putty testen und dann mit IPS auf die eigene IP verbinden. Dann wüssten wir, dass NutShell funktioniert. Nicht, dass an dem Raspi irgend eine andere Einstellung verwendet werden muss.

Toni

Hallo Toni,

ich habe FreeSSHd heruntergeladen und installiert. Wenn ich aber den Port auf 22 belasse, bekomme ich eine Fehlermeldung wenn ich versuche den Server zu starten. Stelle ich ihn auf Port 23, dann kann ich ihn zwar starten, bekomme auch eine Verbindung mit Putty, aber kann Dein Tool nicht testen, da dieser offenbar fest eingestellt ist auf Port 22 - missliche Lage…

Joachim

Port 22 ist SSH. Klar kann man auch alles umbauen, aber wie oft gibst du im Browser einen Port an (www.google.de:123)? Ungefähr niemals weil HTTP eben 80 ist und Ende.

Wenn der Port sich nicht benutzen lässt ist das womöglich schon das Problem. Hast du vielleicht schon nen SSH Dienst am Laufen? Firewall mal ausgeschalten?

Toni

hier noch was cooles gefunden (leider englisch). Unten in den Kommentaren sind Problemlösungen beschrieben.

Toni

Hallo Toni,

mir ist es nun gelungen (auch mit Hilfe des Links) den SSH-Server zum Laufen zu bekommen. Mit Putty (beides läuft auf dem WHS 2011) bekomme ich dann auch eine Verbindung (über 127.0.0.1 aber auch über die „eigene“ IP).
Parallel habe ich es über Dein Skript versucht - im freeSSHd erscheint dann manchmal dass ich „online“ bin. Manchmal hängt das Skript auch wie schon weiter oben beschrieben („Ausführen“-Button inaktiv usw.). Aber weiter geht es leider nicht…

Irgendwo ist da noch der Wurm drin…

Joachim

Ich kann das blöderweise nicht nachstellen, aber irgendwie muss ich da wohl noch mal schauen… :frowning:

Hallo Toni,

erstellt Deine dll beim IPS-Start einen Client-Socket?

Joachim

Nachtrag: Ich habe den Fehler mit dem ClientSocket gefunden, lag an etwa anderem…

Okay…

Macht sie aber auch nicht.

Hallo,

folgende php implementierung funktioniert auch ganz gut. An den Nutzerrechten muss nicht geschraubt werden und keine weitere exe ist noetig.

http://phpseclib.sourceforge.net/


set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');

include('Net/SFTP.php');
  
$ssh = new Net_SSH2('192.168.10.127');
if (!$ssh->login('user', 'pass')) {
    exit('Login Failed');
}

echo $ssh->exec('pwd');
echo $ssh->exec('ls -la');

Weitere Beispiele: http://phpseclib.sourceforge.net/ssh/examples.html

Gruss, Michael

Hallo Michael,

vielen Dank für den Tipp. Wo hast Du denn das Paket innerhalb der IPS-Struktur hinkopiert? Benötigt man alle dort im Download enthaltenen Dateien?

Joachim

der Inhalt des archives liegt unter IP-Symcon\scripts\phpseclib\

VIELEN DANK!!

Das funktioniert!:slight_smile:

Joachim

Hallo Michael,

da ich nicht so ganz der Linux-Profi bin noch mal eine Frage:
Wenn ich auf diesem Weg eine SSH-Verbindung aufbaue, wird diesen dann bei jedem Skript-Durchlauf neu aufgebaut?

Wäre es möglich den „Kanal“ z.B. mit IPS-Start zu öffnen und dann zwischendurch immer mal wieder Statusabfragen zu machen (ich möchte in diesem Fall zyklisch prüfen, ob der Siriproxy noch läuft)? Ich vermute mal, das die Anfragen schneller laufen würden, wenn nicht immer wieder der Anmeldeprozess durchgeführt werden muss…

Joachim

Wie oft willst du denn Pollen? Wenns 1x pro Minute ist, sehe ich da kein Problem.

Erzaehl mal genau was du machen willst, eventuell geht’s auch anders rum. also das ein shell script dir per cron den status auf einen ips socket schreibt.

gruss, michael

…das hört sich ja noch interessanter an!:slight_smile:

Ich habe auf einem Raspberry Pi einen Siriproxy installiert über den ich via Siri und IPS einige Dinge abfragen oder steuern kann. In den bisherigen Siriproxy-Version gab es des Öfteren Programmabbruche. Daher würde ich gerne:
a) den aktuellen Siriproxy-Status im IPS visualisieren (wofür vielleicht eher Dein eben offerierter Ansatz geeignet wäre?)
b) den Siriproxy bei Bedarf via IPS Starten oder Stoppen (wofür vielleicht eher der SSH-Zugang geeignet wäre?)

Joachim

Hallo Michael,

hast Du noch einen Tipp für mich, wie ich Deinen Vorschlag umsetzen könnte?

Joachim

nimm putty und plink und führe damit per ssh zb ‚ps -ax‘ aus. von ips kannst du das mit exec aus einem script starten

Hallo Stele99,

ich bin Linux-Neuling - magst Du das noch etwas näher erläutern?

Joachim

Nachtrag: Das mit putty bekomme ich schon hin…:wink:

Hallo,

mal schnell zusammen gestrickt… host und daemon namen musst du noch anpassen.
Auf dem IPS Server erstellst du einen Server Socket auf port 6789.
Wenn du das sharp entfernst, wird der process auch neu gestartet (#&& siri > /dev/null).

Den code als pcheck.sh speichern.
Ausfuehrbar machen: chmod +x pcheck.sh
Starten: ./pcheck.sh

Naja, musst dir das mal anpassen…


#!/bin/bash

check_process() {
  echo "$ts: checking $1"
  echo "$ts: checking $1" | nc -w 1 ips 6789
  [ "$1" = "" ]  && return 0
  [ `pgrep -n $1` ] && return 1 || return 0
}

while [ 1 ]; do 
  # timestamp
  ts=`date +%T`

  echo "$ts: begin checking..."
  echo "$ts: begin checking..." | nc -w 1 ips 6789
  check_process "siri"
  [ $? -eq 0 ] && echo "$ts: not running, restarting..." && echo "$ts: not running, restarting..."  | nc -w 1 ips 6789 #&& `siri > /dev/null`
  sleep 5
done


Gruss, Michael

ok etwas Detail:
Putty nimmst Du um eine SSH Verbindung (von Windows) aus zu machen.
Am besten du speicherst Die Verbindungsdaten in einem Profil (startseite Putty ab).

Da Putty aber eine GUI Applikation ist, kannst Du diese nicht per excec aus PHP aus ausführen.
Deshalb gibt es plink.exe (auch auf der Putty homepage). Diese wird verwendet um putty über die kommandozeile anzusprechen.

Also rufst du mit exec aus deinem PHP Script PLINK mit den entsprechenden parametern auf.