開始されたIPのリストを取得しようとしているので、nmap
まずすべてのIPをテキストファイルに保存します。
nmap -v -sn 10.10.10.1-254 -oG hosts.txt
nmap
これで、このIPに対して別のコマンドを実行して、テキストファイルからIPを解析してインポートしたいと思います。次を試していますが、動作しません。変数v
はIP値を保持しません。
#!/bin/bash
while read line; do
v=$line|grep 'Up' -B1|grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'
echo $v
done < hosts.txt
答え1
スクリプトが正しく作成されていないようです。
v=$line | grep [...]
変数を割り当てると出力がないのでgrep
。
awk
ファイルを指す方が簡単かもしれませんhosts.txt
。
$ nmap -v -sn 10.10.10.1/24 -oG hosts.txt > /dev/null 2>&1
$ awk '$NF=="Up" { print $2 }' hosts.txt
生成されたファイルの形式を考えるとnmap
(異なるIP範囲を理解してください。明らかに別のネットワークにありますが、例はまだ機能します):
$ head hosts.txt
# Nmap 7.60 scan initiated Fri May 11 10:14:28 2018 as: nmap -v -sn -oG hosts.txt 172.28.9.67/24
# Ports scanned: TCP(0;) UDP(0;) SCTP(0;) PROTOCOLS(0;)
Host: 172.28.9.0 (hostname1.internal) Status: Up
Host: 172.28.9.1 (hostname2.internal) Status: Up
表示されたホストにのみ興味がある場合、Status: Up
魔法の単語は行の最後の単語です。したがって、通常、awk
最後のフィールドが同じ行だけを見て、Up
2番目のフィールド(IPアドレスなど)を印刷します。