bash

ゴールデンウィークはシェルスクリプト漬けな (っ´∀`)っ ゃー でした。こんにちは。さて、Linuxマシンに外付けディスクをマウントして運用している場合、あるディレクトリがマウントされているかどうかの真偽を条件分岐したいこともあるかと思います。

絶対に「/PATH/TO/HOGE」しかマウントしないんだ!という鉄の意志があればよいのですが、皆さんカジュアルにいろんなディレクトリをマウントすると思いますので、チェックが大変ですよね?私は以下のように、${HOME}/Document 以下をUSBハードディスクに外出ししていいます。

[nullpopopo@U24E-RED ~]$ df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 3.9G     0  3.9G   0% /dev
tmpfs                    3.9G     0  3.9G   0% /dev/shm
tmpfs                    3.9G  1.5M  3.9G   1% /run
tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/fedora-root  678G   37G  607G   6% /
tmpfs                    3.9G   56K  3.9G   1% /tmp
/dev/sda1                976M  211M  698M  24% /boot
/dev/md0                 3.7T  774G  2.9T  21% /home/nullpopopo/Documents
tmpfs                    789M   20K  789M   1% /run/user/42
tmpfs                    789M     0  789M   0% /run/user/1000

…続きを読む

いっつも忘れるのでメモ。dateコマンドの結果をプロセス置換してlsコマンドなどに食わせるとき、意図しない動作になることがある。例えば今日(今月)みたいな、31日まである日にdateコマンドの引数に --date=1 month ago をつけたところで

$ date +%Y/%m/%d "--date=1 month ago"
2017/12/01

となってしまう。

…続きを読む

リモートホストにSSH接続できることを確認してからrsyncする

リモートホストにSSH接続できることを確かめてからrsyncしたいなー、というそれだけのキッカケで書いたシェルスクリプト。恐らくシェルスクリプト初心者にも読みやすい作り、のはず。

単にrsyncする前にsshでログインして「:」だけ叩いて帰ってきて「どうだった?」と終了ステータスを捕まえて、sshが正常終了だったらrsyncする、というそれだけなんですが、終了ステータス捕まえるためだけに何秒も待たされるのが嫌だったので、sshコマンドのあとに「ConnectTimeout 1」オプションをつけています。

#!/bin/bash
LANG=C
set -eux

FROM_DIR=${HOME}/N/U/L/L/P/O/P/O/P/O
TO_DIR=${HOME}/M/A/R/I/N/A
SSH_USER=nullpopopo
TO_HOST=sakura

# ------------------------------------------------------------ #
# by @nullpopopo
# First Commit 2017/11/15
# ------------------------------------------------------------ #

SSH_TIMEOUT_STATUS=$(
     ssh -o "ConnectTimeout 1" ${TO_HOST} :     > \
     /dev/null 2>&1                             ; \
     echo $?
    )

if [ ${SSH_TIMEOUT_STATUS} = 0 ];
then
  ssh ${TO_HOST} mkdir -p ${TO_DIR}
  rsync -ahvz                           \
    ${FROM_DIR}/*                       \
    ${SSH_USER}@${TO_HOST}:${TO_DIR}/
fi

はい、答えだけ知りたい人はここで回れ右(つめたいなあ 偉そうだなあ)。

…続きを読む

みなさんこんにちは。@nullpopopoです。ICHIGEKIは半年以上メンテしてなかったのですが、WordPressなどのCMSをインストールしたり、あるいは素っぴんのWEBサーバーだけをインストールしたい、などの要件に柔軟な対応がしたいと思いまして、今月に入って重い腰を上げてメンテすることにしました。本来ならREADME書いたほうがいいのですが、こちらにまとめて書いておきます。まだ若干手を入れたい箇所もあるという認識ですが、ローカルのVMでテストが通ったので一旦リリースします。

ICHIGEKI

ICHIGEKI

…続きを読む