Einem Objekt der Klasse telnetlib() eine Variable uebergeben

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
tholle
User
Beiträge: 29
Registriert: Donnerstag 7. Juli 2011, 13:51

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
Zuletzt geändert von Anonymous am Samstag 28. Januar 2017, 13:20, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
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.
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@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')
tholle
User
Beiträge: 29
Registriert: Donnerstag 7. Juli 2011, 13:51

@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
Antworten