Gibt es so ein Befehl...

11/05/2013 - 21:41 von Luka Ćavara | Report spam
Wenn man eine Datenliste in einer Datei hat,
zB:

cat ip.txt

50.87.85.178
50.97.99.135
74.53.117.226
...

und man will damit etwas tun, dann muss man mit sed
zuerst die Datei umschreiben so wie in diesem Beispiel:

sed -i 's/^/whois /g;s/$/\|grep abuse/g' ip.txt

und man kriegt:

cat ip.txt

whois 50.87.85.178 |grep abuse
whois 50.97.99.135 |grep abuse
whois 74.53.117.226|grep abuse
...

Gibt es so ein Befehl mit dem man dass vereinfacht?

Oder muss man zur Selbsthilfe greifen wie unten:

(Entschuldigung weiterer Text ist im Englisch)

echo -e "Paste a list and press
Ctrl+d";l=$(</dev/stdin);echo;a="Edit command line";read -ep "$a
start: " -i "cp -a" c;read -ep "$a end: " -i "~/backup" p;echo -e
"Skip single step with Ctrl+u";for i in $l;do read -ep "> " -i "$c
$i $p" w; eval "$w";done

Above command will enable you to:

1. Paste a list in console screen
2. Write a command
3. Execute

The command will repeat, every time
with new argument read from the list

Syntax:

<command line start><argument from the list><command line end>

Hint:

Paste a column or list of data from anywhere. I.e. utilize the Block
Select Mode to drag, select and copy columns (In KDE Konsole with
Ctrl+Alt pressed, or only Ctrl pressed in GNOME Terminal respectively).

If you replace in above command "for i in $l" with "for i in $(cat $l)",
then you can enter name(s) of file(s) containing argument list instead
of list itself.

Example:

Paste a list and press Ctrl+d

174.120.202.2 174.120.3.34 174.120.3.34
174.122.127.2 174.122.127.2
50.87.85.178
50.97.99.135
65.254.224.23 66.96.128.64
74.53.117.226

Edit command line start: whois
Edit command line end: |grep abuse

Executing! Skip single step with Ctrl+u


whois 174.120.202.2 |grep abuse


OrgAbuseEmail: abuse@theplanet.com
RAbuseEmail: abuse@theplanet.com
network:Tech-Contact;I:abuse@websitewelcome.com
network:Admin-Contact;I:abuse@websitewelcome.com
network:Abuse-Contact;I:abuse@softlayer.com

whois 174.120.3.34 |grep abuse


OrgAbuseEmail: abuse@theplanet.com
RAbuseEmail: abuse@theplanet.com
network:Tech-Contact;I:abuse@websitewelcome.com
network:Admin-Contact;I:abuse@websitewelcome.com
network:Abuse-Contact;I:abuse@softlayer.com

whois 174.122.127.2 |grep abuse


OrgAbuseEmail: abuse@theplanet.com
RAbuseEmail: abuse@theplanet.com
network:Tech-Contact;I:abuse@theplanet.com
network:Admin-Contact;I:abuse@theplanet.com
network:Abuse-Contact;I:abuse@softlayer.com

whois 50.87.85.178 |grep abuse


OrgAbuseEmail: abuse@unifiedlayer.com
network:Abuse-Contact: abuse@unifiedlayer.com

whois 50.97.99.135 |grep abuse


OrgAbuseEmail: abuse@softlayer.com

whois 65.254.224.23 |grep abuse
whois 66.96.128.64 |grep abuse
whois 74.53.117.226 |grep abuse


OrgAbuseEmail: abuse@theplanet.com
RAbuseEmail: abuse@theplanet.com
network:Abuse-Contact;I:abuse@softlayer.com

ɹɥ˙ʇǝuʇɥ˙ƃz@ɐɹɐʌɐɔ˙ɐʞnן
 

Lesen sie die antworten

#1 Helmut
11/05/2013 - 21:50 | Warnen spam
Hallo, Luka,

Du meintest am 11.05.13:

Wenn man eine Datenliste in einer Datei hat,
zB:

cat ip.txt

50.87.85.178
50.97.99.135
74.53.117.226
...

und man will damit etwas tun, dann muss man mit sed
zuerst die Datei umschreiben so wie in diesem Beispiel:

sed -i 's/^/whois /g;s/$/\|grep abuse/g' ip.txt

und man kriegt:

cat ip.txt

whois 50.87.85.178 |grep abuse
whois 50.97.99.135 |grep abuse
whois 74.53.117.226|grep abuse
...

Gibt es einen Befehl, mit dem man das vereinfacht?



Eine ganz andere Möglichkeit:

while read Ip
do
echo "whois $Ip | grep abuse"
done < ip.txt > ipneu.txt

Dabei wird die Quelldatei "ip.txt" allerdings nicht geàndert -
mindestens zum Experimentieren dürfte das sinnvoll sein.

Viele Gruesse
Helmut

"Ubuntu" - an African word, meaning "Slackware is too hard for me".

Ähnliche fragen