74212


**現象**  
Linux（KDE neon）のセットアップを自動化するshell scriptを実行したところ、下記内容が出力されます。

[code]

    …省略
    
    /var/log/clamav/freshclam.log {
         rotate 12
         weekly
         compress
         delaycompress
         missingok
         create 640  clamav adm
         postrotate
         if [ -d /run/systemd/system ]; then
             systemctl -q is-active clamav-freshclam && systemctl kill --signal=SIGHUP clamav-freshclam || true
         else
             invoke-rc.d clamav-freshclam reload-log > /dev/null || true
         fi
         endscript
         }
    #Automatically Generated by clamav-daemon postinst
    #To reconfigure clamd run #dpkg-reconfigure clamav-daemon
    #Please read /usr/share/doc/clamav-daemon/README.Debian.gz for details
    LocalSocket /var/run/clamav/clamd.ctl
    FixStaleSocket true
    LocalSocketGroup clamav
    LocalSocketMode 666
    # TemporaryDirectory is not set to its default /tmp here to make overriding
    # the default with environment variables TMPDIR/TMP/TEMP possible
    #User clamav
    ScanMail true
    ScanArchive true
    ArchiveBlockEncrypted false
    MaxDirectoryRecursion 15
    FollowDirectorySymlinks false
    FollowFileSymlinks false
    ReadTimeout 180
    MaxThreads 12
    
    省略…
    
[/code]

**期待値**  
Clam AVやその他のソフトウェアのインストールと設定をshell scriptで自動化したいです。

**再現手順**  
KDE
neonで`superUser.sh`と`autoSetup.sh`を同じディレクトリに入れて、`superUser.sh`を実行すると再現できます。

`superUser.sh`

[code]

    #!/bin/bash
    sudo ./autoSetup.sh
    
[/code]

`autoSetup.sh`

[code]

    #!/bin/bash
    
    # homeディレクトリを英語にする
    echo "homeディレクトリを英語にします"
    LANG=C xdg-user-dirs-update --force
    
    # Update
    echo "Updateします"
    apt update
    
    # Upgrade
    echo "Upgradeします"
    apt upgrade
    
    # Vimをインストール
    echo "Vimをインストールします"
    apt install vim
    
    # mozcをインストール
    echo "日本語インプットメソッド「mozc」をインストールします"
    apt install ibus-mozc
    
    # Clam AVのインストールと設定
    echo "Clam AVをインストールします"
    apt install clamav clamav-daemon
    rm /var/log/clamav/freshclam.log
    touch /var/log/clamav/freshclam.log
    chown clamav:clamav /var/log/clamav/freshclam.log
    mkdir -p /opt/script/
    touch /opt/script/clam-full.sh
    chmod 200 /opt/script/clam-full.sh
    sed -e "s/create 640 adm clamav/create 640 clamav clamav/g" /etc/logrotate.d/clamav-freshclam
    echo "#!/bin/sh \\n
    echo ========================================= \\n
    date \\n 
    hostname \\n
    clamscan / \ \\n
         --infected \ \\n
         --recursive \ \\n
         --log=/var/log/clamav/clamscan.log \\n
         --move=/var/log/clamav/virus \ \\n
         --exclude-dir=^/boot \ \\n
         --exclude-dir=^/sys \ \\n
         --exclude-dir=^/proc \ \\n
         --exclude-dir=^/dev \ \\n
         --exclude-dir=^/var/log/clamav/virus \\n
    
    # --infected 感染を検出したファイルのみを結果に出力 \\n
    # --recursive 指定ディレクトリ以下を再帰的に検査 圧縮ファイルは解凍して検査 \\n
    # --log=FILE ログファイル \\n
    # --move=DIR 感染を検出したファイルの隔離先 \\n
    # --remove 感染を検出したファイルを削除 \\n
    # --exclude=FILE 　　検査除外ファイル（パターンで指定） \\n
    # --exclude-dir=DIR　検査除外ディレクトリ（パターンで指定） \\n
    
    if [ $? = 0 ]; then \\n
      echo 'ウイルス未検出.' \\n
    else \\n
      echo 'ウイルス検出!!' \\n
    fi" >> /opt/script/clam-full.sh 
    chmod +x /opt/script/clam-full.sh
    mkdir -p /var/log/clamav/virus
    echo "0 0 * * * /opt/script/clam-full.sh >> /var/log/clamav/clamav_scan.log \\n
    0 7 * * * /opt/script/clam-full.sh >> /var/log/clamav/clamav_scan.log \\n
    0 10 * * * /opt/script/clam-full.sh >> /var/log/clamav/clamav_scan.log \\n
    0 13 * * * /opt/script/clam-full.sh >> /var/log/clamav/clamav_scan.log \\n
    0 16 * * * /opt/script/clam-full.sh >> /var/log/clamav/clamav_scan.log \\n
    0 19 * * * /opt/script/clam-full.sh >> /var/log/clamav/clamav_scan.log \\n" >> /etc/crontab
    sed -e "s/User clamav/#User clamav/g" /etc/clamav/clamd.conf
    
[/code]

**参考リンク**  
[【Ubuntu 20.04/18.04 LTS Server】ClamAVで定期的にウイルスチェックし、メール通知する
](https://www.yokoweb.net/2017/04/15/ubuntu-server-clamav/#toc4)


CC BY-SA 4.0
2021-02-22T15:41:09.203
74211
2021-02-22T17:38:59.057
2021-02-22T17:38:59.057
36906
question
ubuntu shellscript
Shell scriptでKDE neon（Ubuntuベース）のソフトウェアのインストールと設定を自動化したいです。


スクリプトの中で何箇所か `sed` コマンドを実行していますが、sed は **フィルタ結果を標準出力に表示するため** 、あなたの書いたスクリプトでは
`/etc/logrotate.d/clamav-freshclam`, `/etc/clamav/clamd.conf` のフィルタ (置換)
結果が画面に出力されているのだと思います。

結果が画面 (標準出力) に表示されているだけで、元のファイルは書き換わりません。

* * *

元のファイルを直接書き換えたい場合には、sed の `-i` オプションを使います。

[code]

    $ sed -i -e "s/User clamav/#User clamav/g" /etc/clamav/clamd.conf
    
[/code]

バックアップを残したい場合には、`-i` オプションに (空白を開けずに) 任意の拡張子を指定します。

[code]

    $ sed -i.bak -e "s/User clamav/#User clamav/g" /etc/clamav/clamd.conf
    
[/code]


CC BY-SA 4.0
2021-02-22T16:41:02.363
74212
2021-02-22T16:41:02.363
3060
74211
answer