変数になり、コマンド置換を含むファイル名にリダイレクト

変数になり、コマンド置換を含むファイル名にリダイレクト

私はnmapを使用してネットワークをスキャンし、スキャン情報を含むXMLファイルを作成します。各ファイルが一意でスキャン時間と日付を表示できるように、XMLファイルにスキャン日を含めたいと思います。定期的に同じネットワークに対して多くのスキャンを実行します。私はそれを生成するためにdateコマンドを使用します。

nmap -sSV -oX scan_dmz_$(date +'%H'h'%M'm'%S's_'%d'-'%m'-'%Y').xml 10.0.0.0/24 10.1.0.0/24

しかし、後でXMLを便利なHTMLファイルに変換するスクリプトの他のコマンド(xsltproc)で使用できるように、XMLファイル名を変数に入れたいと思います。デフォルトでは、xsltprocコマンドは変換できるようにnmapによって生成されたXMLファイルの名前を知る必要があります。

xsltproc scan_dmz_12h00m00s_01-01-2023.XML -o DMZ_HTML_report.html

xsltprocで使用できるように、このXMLファイル名を変数に入れようとします。私はそれがどのように機能するかを調べるために非常に基本的なbashスクリプトを試しましたが、うまく動作しませんでした。

tail /var/log/auth.log > tailout=tail_$(date +'%H'h'%M'm'%S's_'%d'-'%m'-'%Y').xml ; xsltproc $tailout -o DMZ_HTML_report.html

本質的に、将来のコマンドがファイルを処理できるように同時に変数でなければならない変数ファイル名にリダイレクトする方法は?よろしくお願いします。

ベストアンサー1

まず、変数を入力してから使用してください。

tailout=tail_$(date +%Hh%Mm%Ss_%d-%m-%Y).xml
tail /var/log/auth.log > "$tailout"
xsltproc "$tailout" -o DMZ_HTML_report.html

タイムスタンプ形式の代わりに%FT%T%z(同等の)形式に切り替えることを検討してください。%Y-%m-%dT%H:%M:%S%zこれは標準的で明確で、一般的に理解され、語彙順、年代順に並べられています。

おすすめ記事