Telnet prompt konfigurierbar

Begonnen von Roger, 15 Februar 2015, 22:51:28

Vorheriges Thema - Nächstes Thema

Roger

Hallo zusammen,
ich betreibe mehrere FHEM Instanzen. Damit es bei der Eingabe von Befehlen in den verschiedenen telnet Sitzungen nicht zu Verwechslungen kommt, möchte ich gern den prompt konfigurierbar haben,
also statt fhem> den Instanznamen oder Hostnamen angeben können.
z.B. mit
attr tPort prompt hm_fhem>
meldet sich dann FHEM mit hm_fhem>
Habe allerdings keine Ahnung, wo das derzeit festgelegt wird (wohl 98_telnet.pm oder fhem.pl).
Wäre echt Klasse, wenn den Wunsch jemand umsetzen könnte  :)
Roger
Zotac & RPIs mit 10*FHEM
2*HM-LAN, 2*JeeLink, 2*RS485, SignalESP
HomeMatic, PCA301 Komponenten, ModBus: Stromzähler, Fronius WR, Shelly, Victron

betateilchen

Zitat von: Roger am 15 Februar 2015, 22:51:28
Habe allerdings keine Ahnung, wo das derzeit festgelegt wird (wohl 98_telnet.pm oder fhem.pl).

98_telnet.pm, Zeile 279

Kannst Du in Deiner Installation problemlos selbst ändern ;)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Roger

Hallo betateilchen,
vielen Dank, klappt  :)
Habe ein attribut telnetprompt angelegt und ein diff (mit Doku) erstellt.
Vielleicht kann das jemand prüfen und wenn es so OK ist auch einchecken  :D

Roger
Zotac & RPIs mit 10*FHEM
2*HM-LAN, 2*JeeLink, 2*RS485, SignalESP
HomeMatic, PCA301 Komponenten, ModBus: Stromzähler, Fronius WR, Shelly, Victron

betateilchen

Das Attribut fehlt noch in der _Initialize



Index: 98_telnet.pm
===================================================================
--- 98_telnet.pm (Revision 8010)
+++ 98_telnet.pm (Arbeitskopie)
@@ -20,7 +20,7 @@
   $hash->{UndefFn} = "telnet_Undef";
   $hash->{AttrFn}  = "telnet_Attr";
   $hash->{NotifyFn}= "telnet_SecurityCheck";
-  $hash->{AttrList} = "globalpassword password ".
+  $hash->{AttrList} = "globalpassword password telnetprompt ".
                         "allowfrom SSL connectTimeout connectInterval ".
                         "encoding:utf8,latin1";
   $hash->{ActivateInformFn} = "telnet_ActivateInform";
@@ -185,6 +185,7 @@
     my $chash = TcpServer_Accept($hash, "telnet");
     return if(!$chash);
     $chash->{encoding} = AttrVal($name, "encoding", "utf8");
+    $chash->{telnetprompt}  = AttrVal($name, "telnetprompt", "fhem");
     syswrite($chash->{CD}, sprintf("%c%c%c", 255, 253, 0) ) if( AttrVal($name, "encoding", "") ); #DO BINARY
     $chash->{CD}->flush();
     syswrite($chash->{CD}, sprintf("%c%c%cPassword: ", 255, 251, 1)) # WILL ECHO
@@ -276,7 +277,7 @@

   $ret = "";
   $ret .= (join("\n", @ret) . "\n") if(@ret);
-  $ret .= ($hash->{prevlines} ? "> " : "fhem> ")
+  $ret .= ($hash->{prevlines} ? "> " : $hash->{telnetprompt}."> ")
           if($gotCmd && $hash->{prompt} && !$hash->{rcvdQuit});
   if($ret) {
     $ret = utf8ToLatin1($ret) if( $hash->{encoding} eq "latin1" );
@@ -429,6 +430,11 @@
         non-local connections.
         </li><br>

+    <a name="telnetprompt"></a>
+    <li>telnetprompt<br>
+        Sets the string for the telnet prompt, followed by >. Default is fhem, so the default prompt is fhem>
+        </li><br>
+
     <a name="SSL"></a>
     <li>SSL<br>
         Enable SSL encryption of the connection, see the description <a
@@ -576,6 +582,11 @@
         ausschlie&szlig;lich f&uuml;r nicht-lokale Verbindungen verlangt.
         </li><br>

+    <a name="telnetprompt"></a>
+    <li>telnetprompt<br>
+        Gibt die Zeichenkette an, welche gefolgt von > in der Telnet-Sitzung als Kommandoprompt ausgegeben wird.
+        </li><br>
+
     <a name="SSL"></a>
     <li>SSL<br>
         SSL-Verschl&uuml;sselung f&uuml;r eine Verbindung aktivieren. <a

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Um das einchecken zu lassen, musst Du den patch in der entsprechenden Forumrubrik, die für das telnet-Modul zuständig ist, posten.

FHEM/98_telnet.pm            rudolfkoenig         http://forum.fhem.de Automatisierung

Also im Bereich "Automatisierung".
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Roger

Zotac & RPIs mit 10*FHEM
2*HM-LAN, 2*JeeLink, 2*RS485, SignalESP
HomeMatic, PCA301 Komponenten, ModBus: Stromzähler, Fronius WR, Shelly, Victron