Seite 1 von 1

Einem Objekt der Klasse telnetlib() eine Variable uebergeben

Verfasst: Samstag 28. Januar 2017, 12:53
von tholle
Hi,

ich brauche einmal Hilfe bei der Uebergabe einer Variable an das Objekt telnetlib.write() der Klasse telnetlib.
Es handelt sich um Python3.5.
Ich wuerde gern ein Wert einer Variable (z.B. '25') dem Objekt Telnet.write() uebergeben und scheitere daran.

Beispiel:

Code: Alles auswählen

import telnetlib
import socket

host = '192.168.XX.XX'
port = 'XXXX'
tn = telnetlib.Telnet()

var = '25'

tn.open(host,port)
tn.write(("BUERO mixer volume var \n").encode('ascii'))
tn.close()
Das genannte Beispiel klappt so leider nicht.
Der Weg, der in der Pythondoku https://docs.python.org/3.5/library/telnetlib.html aufgezeigt wird, klappt leider auch nicht. Da bekomme ich einen Syntax-Error:

Code: Alles auswählen

>>> buero_vol = "BUERO mixer volume "
>>> buero_vol_value = '25'
>>> tn.write(buero_vol('ascii') + buero_vol_value"\n")
  File "<stdin>", line 1
    tn.write(buero_vol('ascii') + buero_vol_value"\n")
                                                    ^
SyntaxError: invalid syntax
Ich kann mir gut vorstellen, dass das geht. Wenn also jemand einen Tipp fuer mich hat, wie ich eine Variable in einer Telnetsession uebergeben kann, immer raus damit.

Vielen Dank schon mal und Gruss,
tholle

Re: Einem Objekt der Klasse telnetlib() eine Variable uebergeben

Verfasst: Samstag 28. Januar 2017, 13:27
von BlackJack
@tholle: Der Weg aus der Python-Dokumentation funktioniert schon, wenn man ihn denn so gehen würde wie er dort beschrieben steht. Einfach einen Namen und dahinter eine literale Zeichenkette zu schreiben ist syntaktisch falsch, darum der `SyntaxError`, so etwas steht in der Dokumentation aber auch nicht.

An der Stelle würde ich allerdings auch eher Zeichenkettenformatierung mittels `format()`-Methode verwenden statt mehrere Zeichenketten mit ``+`` zusammen zu stückeln.

Re: Einem Objekt der Klasse telnetlib() eine Variable uebergeben

Verfasst: Samstag 28. Januar 2017, 14:11
von Sirius3
@tholle: warum glaubst Du, dass auf magische Weise vol in einem String im ersten Beispiel durch 25 ersetzt wird, BUERO, mixer oder volume aber nicht? Im zweiten Beispiel hältst Du Dich nicht an die Grammatik von Python, daher der SyntaxError. Wenn man Strings zusammenbauen will, kann man auch das Kapitel zu Strings in der Dokumentation lesen.

Code: Alles auswählen

"BUERO mixer volume {} \n").format(var).encode('ascii')

Re: Einem Objekt der Klasse telnetlib() eine Variable uebergeben

Verfasst: Samstag 28. Januar 2017, 14:40
von tholle
@BlackJack @Sirius3,

vielen fuer die schnellen Antworten und die Hilfestellung.
@Sirius3, vielen Dank fuer das Code-Beispiel. Damit klappt das ganz hervorragend.

Viele Gruesse,
tholle