Quote[~] # ls
index_default.html
[~] #
[~] #
1 2 3 4 5 6 7 8 9 10 11 12
my $t = new Net::Telnet( Timeout => 10, Prompt => '/\[\~\] \# $/', Port => my port, Output_field_separator => "\r\n", Output_record_separator => "\r\n", ); $t->open('my host'); $t->login('admin','my pass'); my @lines = $t->cmd('ls'); $t->close; print @lines;
Quotec:\meinpfad>perl telnet.pl
←[0;0mindex_default.html←[0m
[~] #
[~] #
2015-10-07T07:44:45 Raubtier1. bei mit tut es die Forumssoftware korrekt mit den Code-Tags (allerdings nur, wenn ich mit /code schließe, vielleicht hast du nur den Slash vergessen?)
2015-10-07T07:44:45 RaubtierVielleicht ist es am einfachsten, einfach $t->cmd("export PS1=''") auszuführen, um den Prompt auf einen Leerstring zu setzen?
2015-10-07T07:44:45 RaubtierDie Escape-Sequenzen um die Ausgabe (das ist die Farbe!) bekommst du weg mit: ls -1 --color=never (das -1 geht sicher, dass nur eine Datei pro Zeile zurück kommt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/bin/ls: unrecognized option `--color=never'
BusyBox v1.01 (2015.09.24-18:54+0000) multi-call binary
Usage: ls [-1AacCdeFilnpLRrSsTtuvwxXhk] [filenames...]
List directory contents
Options:
-1 list files in a single column
-A do not list implied . and ..
-a do not hide entries starting with .
-C list entries by columns
-c with -l: show ctime
-d list directory entries instead of contents
-e list both full date and full time
-F append indicator (one of */=@|) to entries
-i list the i-node for each file
-l use a long listing format
-n list numeric UIDs and GIDs instead of names
-p append indicator (one of /=@|) to entries
-L list entries pointed to by symbolic links
-R list subdirectories recursively
-r sort the listing in reverse order
-S sort the listing by file size
-s list the size of each file, in blocks
-T NUM assume Tabstop every NUM columns
-t with -l: show modification time
-u with -l: show access time
-v sort the listing by version
-w NUM assume the terminal is NUM columns wide
-x list entries by lines instead of by columns
-X sort the listing by extension
-h print sizes in human readable format (e.g., 1K 243M 2G )
2015-10-07T07:44:45 RaubtierUnd ich würde mal vermuten, dass das \r in den Separator-Einstellungen eigentlich weg kann.
2015-10-07T08:19:10 GwenDragonWenn du bei cmd() ls mit Pfad, also /bin/ls benutzt, sollte es passen, oder?
2015-10-07T11:25:56 GwenDragonWas ist denn das für ein Zielsystem auf dem der Telnet-Server läuft?
2015-10-07T11:25:56 GwenDragonAnscheinend emuliert da das Ziel-OS ein VT100-Terminal.
Das hat diese ESC-Sequenzen http://ascii-table.com/ansi-escape-sequences-vt-10... als Steuerzeichen.
2015-10-07T11:25:56 GwenDragonHast du auf deinem Client die Umgebungsvariable TERM gesetzt?
1 2 3 4 5
my $ESC1 = "\x1B[0m"; my $ESC2 = "\x1B[0;0m"; my $content =~ s/\Q$ESC1\E//g; $content =~ s/\Q$ESC2\E//g;
1 2 3 4 5 6 7 8 9 10
if (my @lines = $t->cmd('export LS_COLORS=none; ls')) { foreach my $line (@lines) { $line =~ s/[\r\n]//g; $line =~ s/\[~\] # //g; $line =~ s/\x1B\[0m//g; $line =~ s/\x1B\[(\d+);(\d+)m//g; next if $line eq ''; print "Zeile: '$line'\n"; } }
2015-10-07T14:41:27 GwenDragonProbier das doch mal als Kommando (in einer Zeile): export LS_COLORS=none; ls