でのコマンドの出力からすべての行(「ホストがアップしている」additionalyさらに使用するために-string):プロセス私は、変数内のホストとそのIPアドレスを格納したいnmapのネットワークスキャン出力のすべての行からのbash
Nmap scan report for samplehostname.mynetwork (192.168.1.45)
Host is up (0.00047s latency).
は、これまでの私のスクリプトのthats::
は#!/bin/bash
while IFS='' read -r line
do
host=$(grep report|cut -f5 -d' ')
ip=$(grep report|sed 's/^.*(//;s/)$//')
printf "Host:$host - IP:$ip"
done < <(nmap -sP 192.168.1.1/24)
出力は、私は理解していない何かを作るnmapの出力を処理することのように見えます。それは "Host:"を最初に置き、最後に "IP:"を置きますが、$ ipの出力は完全に省略されています。
私のスクリプトの生成出力は次のとおりです。別々に
Host:samplehostname1.mynetwork
samplehostname2.mynetwork
samplehostname3.mynetwork
samplehostname4.mynetwork
samplehostname5.mynetwork - IP:
(確認のためのよりよい解決策があるかもしれませんが)、$ホストと$ IPの抽出は、基本的に動作します。私はprintf $ hostか$ ipのどちらかを単独で使うことができます。
スクリプトに何が問題なのですか?ありがとう!
それは素晴らしいです!しかし、今、私は "Host is up"正規表現を実装することにこだわりました。 – roothahn
'up_regex = 'ホストはup \((*)s latency \)' 'のようなものを使いたいと思っていますか? – chepner
私はup_regex = 'Host is(。*)'と考えましたが、既存のものへのチェックをどのように実装するのか分かりませんifステートメント – roothahn