bash-Skript ausführen dig-x
Guten Tag. Las ich in einem anderen Beitrag in Bezug auf das auflösen von Hostnamen zu IP-Adressen und nur über die erste IP in der Liste.
Will ich das Gegenteil tun und verwendet das folgende Skript:
#!/bin/bash
IPLIST="/Users/mymac/Desktop/list2.txt"
for IP in 'cat $IPLIST'; do
domain=$(dig -x $IP +short | head -1)
echo -e "$domain" >> results.csv
done < domainlist.txt
Ich würde gerne das Skript eine Liste mit 1000+ IP-Adressen gesammelt von einem firewall-Protokoll, und lösen Sie die Liste von Ziel-IP-Adressen zu domains. Ich will nur einen Eintrag in der Antwortdatei, da werde ich das hinzufügen dieser auf die CSV, die ich aus der firewall exportiert wird als eine weitere "Spalte" in Excel. Ich könnte sogar mehrere Antworten als Semikolon getrennt in einer Zeile (oder /,|,\,*, usw). Die list2.txt ist ein standard-ascii-Datei. Ich habe versucht, ein EOF-Zeichen in Mac, Linux, Windows.
216.58.219.78
206.190.36.45
173.252.120.6
Was ich bekommen, nun:
Den domainlist.txt ist immer eine exakte Kopie von list2.txt während die Ergebnisse nichts. Keine Fehler auf dem Bildschirm, wenn ich das Skript ausführen entweder.
Ich bin mit Mac OS X mit Macports.
- Tut
dig -x
bieten die Ausgabe, die Sie wollen, wenn manuell durchgeführt? Die manual-Seite fürdig
sagt, dass die-f
option ausführen im batch-Modus gegeben ist eine Datei mit IP-Adressen. Vielleicht ist das ein besserer Ausgangspunkt? - was ist der Punkt, der
done < domainlist.txt
in diesem speziellen Fall ? die for-Schleife wird überhaupt nicht benötigen. Wenn ich den code testen (w/o den domainlist.txt Zeug), die nur faul daran ist, dass Sie nicht backquotes für diecat $IPLIST
. Ich vermute, das ist ein copy paste Fehler ? Wenn nicht, dann ist das der Grund, warum es nicht funktioniert 🙂 Eine besser lesbare Möglichkeit ist die Verwendungfor IP in $( cat $IFLIST ); do
- dein Vorschlag das problem behoben. Ich kann nicht wählen Sie als Antwort.
- kein prob, bin froh, dass es geholfen hat.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein Skript hat eine Reihe von syntax und stilistische Fehler. Die minimale Lösung ist, ändern sich die Anführungszeichen um den
cat
:Einfache Anführungszeichen erzeugen einer Zeichenkette; backticks (oder die viel bevorzugte syntax
$(cat $IPLIST)
) führt eine Kommando-substitution, d.h. führt den Befehl aus und fügt dessen Ausgabe. Aber Sie beheben sollten Ihre Angabe, und, vorzugsweise, Lesen Sie die Datei zeilenweise statt. Wir können auch loszuwerden, die nutzlosecho
.domains.txt
war nie nützlich oder notwendig in den ersten Platz. Wenn es erforderlich ist, aktualisieren Sie bitte Ihre Frage zu erklären, wofür es verwendet wird.Scheint, dass in Ihrem
/etc/resolv.conf
konfigurierten nameserver die nicht-Unterstützung von reverse-lookups und das ist, warum die Antworten sind leer.Übergeben Sie den DNS-server, die Sie verwenden möchten, um die
dig
Befehl. Sagen wir8.8.8.8
(Google) zum Beispiel:Befehle gibt die Domäne mit einem
.
angehängt. Wenn Sie Sie ersetzen möchten, das können Sie zusätzlich auch die Leitung zused
: