2016-06-13 13 views
0

linuxホストにインストールされているnmapをチェックするcrontabを使って実行するbashスクリプトを作成しました。問題は...何らかの理由で、チェックが正常に動作していないと、常に何度も何度もnmapのをインストールしようとしていることをプログラムのバージョンなどをbashで確認してください

#!/bin/sh 
if ! $(nmap --version | grep -q "7.12"); then 
    wget https://nmap.org/dist/nmap-7.12.tar.bz2 -P /tmp/ 
    cd /tmp && bzip2 -cd nmap-7.12.tar.bz2 | tar xvf - 
    cd nmap-7.12 
    ./configure --without-zenmap 
    make 
    make install 
    cd .. 
    rm nmap-7.12.tar.bz2 
    rm -rf nmap-7.12 
    reboot 
fi 

である私は、仕事はそれが一度べき(実行されているかどうかを確認する場合は、しかし二度とバージョンは2回目と一致する必要がありますので)...

$> ps aux | grep nmap 
root  27696 15.4 0.3 2940 1464 ?  R 16:31 0:00 /bin/bash ./configure --disable-option-checking --prefix=/usr/local --without-zenmap --cache-file=/dev/null --srcdir=. --no-create --no-recursion 

は、コマンドラインの歩留まり(-qなし)からチェックを実行している:で台無しにされて何

$> nmap --version | grep "7.12" 
Nmap version 7.12 (https://nmap.org) 

私のscri pt?

答えて

3

ShellCheckは言う:

Line 2: 
if ! $(nmap --version | grep -q "7.12"); then 
    ^-- SC2091: Remove surrounding $() to avoid executing output. 

これを行うための正しい方法はただである:

if ! nmap --version | grep -q "7.12"; then 

あなたの試みは、文字列Nmap version 7.12 (https://nmap.org)を見つけ、そしてので$(..)のそれは、そのように実行しようとしますコマンド。これはおそらく、質問にログインし、含まれている必要がありますエラーが発生:エラーが間違っているので

Nmap: command not found 

!は、それが真なり、あなたのコードは毎回実行されます。

関連する問題