2009-08-07 25 views
7

Hãy nói rằng tôi có một danh sách các IP đi vào một khúc gỗ mà tôi tailing:đèo stdin vào máy chủ Unix hoặc đào lệnh

1.1.1.1 
1.1.1.2 
1.1.1.3 

Tôi muốn một cách dễ dàng giải quyết chúng với tên đăng cai. Tôi muốn có thể

tail -f access.log | host - 

Việc không làm máy chủ không hiểu đầu vào từ stdin theo cách này. Cách dễ nhất để làm với mà không cần phải viết một tập tin tĩnh hoặc dự phòng để perl/python/etc là gì?

Trả lời

19

Sử dụng xargs -l:

tail -f access.log | xargs -l host 
+0

Điều này thực sự sẽ nấc cục khi máy chủ thực sự được chạy với máy chủ 1.1.1.1 1.1.1.2 Gây tra cứu dns trên máy chủ DNS không hợp lệ. Đặt "-d '\ n" "dường như không giúp được gì. – tomasz

+6

Sử dụng "xargs -l" (hoặc "xargs -L 1") để đảm bảo rằng lệnh được chạy cho mỗi dòng. –

4

Bạn cũng có thể sử dụng được xây dựng trong read:

tail -f access.log | while read line; do host $line; done 
3

Trong các lệnh dưới đây, thay thế cat với tail -f, vv nếu cần thiết.

Sử dụng host:

$ cat my_ips | xargs -i host {} 
1.1.1.1.in-addr.arpa domain name pointer myhost1.mydomain.com. 
1.1.1.2.in-addr.arpa domain name pointer myhost2.mydomain.com. 

Sử dụng :

$ cat my_ips | xargs -i dig -x {} +short 
myhost1.mydomain.com. 
myhost2.mydomain.com. 

Lưu ý rằng tùy chọn để -ixargs ngụ ý tùy chọn -L 1.

Để lần đầu tiên nhận được IP của máy chủ lưu trữ của một người, hãy xem this answer.

Các vấn đề liên quan