バックエンドの一部としてnmapを使って小さなネットワークスキャン自動化ツールを作成しています。ホスト名とIPアドレスを取得しようとすると、IPは "(192.168.0.1) "現在、私はホスト名とIPを取得して印刷するためにこのコードを使用しています。Bash:awkは配列の項目からカッコを削除する
devices=($(nmap $net_addr -sn | grep -E '([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})' | awk {' print $5 "\t" $6)'}))
printf '%-10s %s\n' "${devices[@]}"
このコードは、nmapのIPアドレスの長さがこのdoesnの可変であるように私はSUBSTR($ 6,2)を使用しようとしましたが、これだけチョップ最初のビットをオフし、悲しいことに、この
UNKNOWN (192.168.0.1)
UNKNOWN (192.168.0.3)
UNKNOWN (192.168.0.5)
UNKNOWN (192.168.0.6)
UNKNOWN (192.168.0.16)
UNKNOWN (192.168.0.18)
UNKNOWN (192.168.0.19)
UNKNOWN (192.168.0.21)
UNKNOWN (192.168.0.22)
UNKNOWN (192.168.0.23)
UNKNOWN (192.168.0.32)
UNKNOWN (192.168.0.253)
を印刷します私を助けてはいけない。要するに、これは望ましい出力です。ここ
UNKNOWN 192.168.0.1
UNKNOWN 192.168.0.3
UNKNOWN 192.168.0.5
UNKNOWN 192.168.0.6
UNKNOWN 192.168.0.16
UNKNOWN 192.168.0.18
UNKNOWN 192.168.0.19
UNKNOWN 192.168.0.21
UNKNOWN 192.168.0.22
UNKNOWN 192.168.0.23
UNKNOWN 192.168.0.32
UNKNOWN 192.168.0.253
は、nmapのあなたが示した予想出力を得るために、単一のawk
を、次の試みることができるあなたの示す入力を1として192.168.0.0/24 -sn
Starting Nmap 7.40 (https://nmap.org) at 2017-12-31 14:42 UTC
Nmap scan report for UNKNOWN (192.168.0.1)
Host is up (0.0014s latency).
Nmap scan report for UNKNOWN (192.168.0.3)
Host is up (0.052s latency).
Nmap scan report for UNKNOWN (192.168.0.5)
Host is up (0.0065s latency).
Nmap scan report for UNKNOWN (192.168.0.6)
Host is up (0.0073s latency).
Nmap scan report for UNKNOWN (192.168.0.7)
Host is up (0.029s latency).
Nmap scan report for UNKNOWN (192.168.0.16)
Host is up (0.011s latency).
Nmap scan report for UNKNOWN (192.168.0.18)
Host is up (0.053s latency).
Nmap scan report for UNKNOWN (192.168.0.21)
Host is up (0.011s latency).
Nmap scan report for UNKNOWN (192.168.0.22)
Host is up (0.012s latency).
Nmap scan report for UNKNOWN (192.168.0.23)
Host is up (0.0061s latency).
Nmap scan report for UNKNOWN (192.168.0.32)
Host is up (0.0013s latency).
Nmap scan report for UNKNOWN (192.168.0.253)
Host is up (0.0011s latency).
Nmap done: 256 IP addresses (12 hosts up) scanned in 3.16 seconds
がああ[OK]をので、私はちょうどこれを実行しようとしましたsedを試すことができます。デバイス=($(nmapの$ net_addr -sn |グレップの-E「([0-9] {1、 [0-9] {1,3} \。[0-9] {1,3}) '| awk'/Nmapスキャンレポート/ {gsub (NF-1)、$ NF}))))そして、私はこれを次のようにしました:./program.sh:行10:予期しないEOF '' 'を探している間 ./program.sh:行12:構文エラー:予期しないファイルの終わり – user3019354
ちょうど私の問題を実現しました。私は引用符を逃しました、コードは魅力のように動作します! – user3019354
awkは、grepが行うことができる便利なことを実行できるので、awkを使用しているときにはgrepは必要ありません。たとえば、次のようになります。 'grep 'foo' | awk '/ bar /' '=' awk '/ foo/&&/bar /' 'のようになります。 –