Ich versuche verzweifelt, die Ausgabe von grep für ein Skript zu verwenden:
ping dc"$(grep -o .""\[12].domain.local"" /etc/squid3/squid.conf)"
ping "$(grep -o ""dc0\[12].domain.local"" /etc/squid3/squid.conf)"
Beide kehren zurück:
ping: unknown host dc02.domain.local
Wenn ich eingebe ping dc02.domain.local
, funktioniert es! Ich kann nicht sehen, was ich falsch mache?
Relevante Zeile von /etc/squid3/squid.conf ist:
external_acl_type memberof %LOGIN /usr/lib/squid3/squid_ldap_group -R -K -b "dc=domain,dc=local" -D username@domain.local -W /aaa/bbb/ccc.txt -f "(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=%g,ou=aaa,ou=bbb,ou=ccc,ou=ddd,ou=eee,dc=domain,dc=local))" -h dc02.domain.local
/etc/squid3/squid.conf
zu Ihrer Frage hinzu.ping "$(grep -o '[^ ]\+$' /etc/squid3/squid.conf)"
Antworten:
Der Grund dafür ist, dass die Datei
/etc/squid3/squid.conf
mehr als eine Zeile enthält, die mit dem Muster übereinstimmt. Also, wenn du es tustAlle durch Zeilenumbrüche getrennten Übereinstimmungen werden als einzelnes Argument übergeben, für
ping
das jeweils nur eine Adresse als Argument verwendet wird.Beachten Sie, dass Sie anstelle des verwendeten Regex-Musters die Suche nach dem letzten Wort vereinfachen können, indem Sie Folgendes verwenden:
vorausgesetzt, das Wort beginnt mit
dc
.Da Sie mehrere Adressen zum Überfahren haben
ping
, sollten Sie eine Schleife verwenden:ping -c 4
Sendet 4 ICMP-Echo_Request-Pakete an jedes Ziel.quelle
Sie könnten auch verwenden
awk
-F'-h '
Uns interessiert nur, was dahinter steckt
-h
./-h +dc0[12]\.domain\.local/
Wir interessieren uns nur für die Saite
dc01.domain.local
unddc02.domain.local
quelle