Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]12710[/thread]

Dateiattribute auf zweitem Rechner auslesen

Leser: 1


<< >> 5 Einträge, 1 Seite
Suppe
 2008-11-03 13:49
#115911 #115911
User since
2008-11-03
3 Artikel
BenutzerIn
[default_avatar]
Hallo Jungs und Mädels,


Ich würde gerne mit Perl die Dateiattribute auf einem zweiten Linux Rechner auslesen. Auf dem eigenen Rechner würde ich das ja per (stat $dir) [8]; machen. Nur wie kann ich das Problem lösen, wenn ich das auf einem anderen Rechner machen möchte? Muss dafür das Laufwerk des zweiten Rechners gemountet sein(leider ist das nicht möglich) oder sollte ich das mittels ssh lösen? Was ist da eurer meinung nach der beste Lösungsansatz?


Grüsse
betterworld
 2008-11-03 14:08
#115912 #115912
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Das kommt ganz auf die Rahmenbedingungen an, würde ich sagen. Um was für einen Rechner handelt es sich denn, bzw. was ist alles darauf installiert? Wenn beispielsweise ein Webserver darauf läuft, könnte man das recht einfach als CGI machen. Zusätzlich muss man noch erwägen, inwiefern das ganze "sicher" sein soll. Soll ein Passwort gebraucht werden? Ist es schlimm, wenn ein Unbefugter die Dateiattribute dieser Datei sieht? Und ist es immer dieselbe Datei, oder dasselbe Verzeichnis?

Im Prinzip ist es schon möglich, das über SSH zu machen. Nur wenn dabei Dateinamen verschickt werden können sollen, die Leerzeichen etc. enthalten, ist es immer nicht so besonders spaßig, das richtig zu escapen. Ferner müsste man wahrscheinlich eine Methode zur passwortfreien Authentifizierung einsetzen, damit das Script nicht nach dem Passwort fragt.
Suppe
 2008-11-03 14:32
#115914 #115914
User since
2008-11-03
3 Artikel
BenutzerIn
[default_avatar]
Hallo betterworld,

Zugriff wäre von Linux nach Linux. Auf dem Rechner läuft kein Webserver.

Mir wäre der Zugriff per SSH am liebsten.
Ich würde gerne eine liste von Pfad+Dateinamen durchlaufen und deren LastviewedTime auslesen.

Jede andere und einfachere Lösung ist aber auch willkommen.

Grüsse


ps.
wäre das evtl der richtige Ansatz?
Die Liste der Dateien im Folgenden statement durchlaufen?
$returncode = system("ssh -i private_openssh.ppk -l username serveradress 'stat -c %X Filename' " );
Den Returnwert mit localtime in ein Datumsformat umwandeln?
Gast Gast
 2008-11-03 18:31
#115922 #115922
Du mußt nicht für j4ede abfrage einen neue Verbindung aufbauen. Du kannst es auch alles auf einmal machen. Wenn es zu viele Dateien sind kannst du zusätzlich "xargs" verwenden.
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;

my $server='root@127.0.0.1';
my $ssh_cmd='/usr/bin/ssh';
my $server_cmd='stat -c "%n %X" ';
my @filelist=qw(/etc/fstab /etc/passwd);

my $list='"'.join('" "',@filelist).'"';
my %filestat=map{(split(/\s+(?=\d)/,$_))}map{chomp($_);$_}(`$ssh_cmd $server '$server_cmd $list'`);
print Dumper(\%filestat);

Das baut dir gleich ein Hash zusammen mit den Dateinamen als Schüssel.
Suppe
 2008-11-04 12:53
#115949 #115949
User since
2008-11-03
3 Artikel
BenutzerIn
[default_avatar]
danke für die raschen Lösungsvorschläge
<< >> 5 Einträge, 1 Seite



View all threads created 2008-11-03 13:49.