ls Hostnamenpräfix hinzufügen?

755
Sridhar-Sarnobat

Gibt es eine kompakte Möglichkeit, Dateien aufzulisten, wobei der Hostname vorangestellt ist? Meine Bemühungen zu kombinieren ls, xargs, pasteund Prozess Substitution hat mich im Stich gelassen.

Das ist das Beste, was ich mir ausgedacht habe:

ls * | paste <(echo $HOST) 

Letztendlich möchte ich eine Reihe von Dateien auf mehreren Hosts auflisten, indem ich eine Reihe von SSH-Befehlen aufrufe, sodass ich Folgendes tun kann:

ssh host1 "ls_with_hostname_prefix /var/log/*" ssh host2 "ls_with_hostname_prefix /var/log/*" ssh host3 "ls_with_hostname_prefix /var/log/*" 
1

1 Antwort auf die Frage

1
Jakuje

Verwandte Frage zu SO . Sie können es einfach tun

ls | sed -e 's/^/$HOST /' 

Sie möchten es wahrscheinlich als Skript auf den Remote-Hosts speichern oder es sogar mit dem folgenden zusammenführen ssh:

function remote_ls_with_alias() { ssh $1 "ls $2 | sed -e \"s/^/$1 /\"" } 

und führe es als

remote_ls_with_alias host1 "/var/log/*" remote_ls_with_alias host2 "/var/log/*" remote_ls_with_alias host3 "/var/log/*" 
Mann, das ist so offensichtlich und ich habe es völlig vermisst. Sridhar-Sarnobat vor 7 Jahren 0
Nur eine Anmerkung für alle, die lesen: Doppelte Anführungszeichen, so dass der Hostname aufgelöst wird. (Ich würde es selbst bearbeiten, aber der Stapelüberlauf besagt, dass meine Änderungen zu kurz sind.) Sridhar-Sarnobat vor 7 Jahren 0