おー、ほぼ一年ぶりの更新だ・・・
普段、何気に設定していた cron なんですが、
「PATHは通っていないから、フルパス書いて」
「#!/bin/bash はお呪い」
っていう程度の認識しかなかった。
ので、一からお勉強。
まず、cron の シェル等を確認するには、cron実行ユーザーで
[root@localhost ~]# crontab -e
* * * * * printenv >/var/tmp/env.txt
ってやって1分待つ。
で、1分後に出来上がったファイルの中身を見てみる
[root@localhost ~]# cat /var/tmp/env.txt
...
SHELL=/bin/sh
USER=root
PATH=/usr/bin:/bin
PWD=/root
LANG=ja_JP.UTF-8
SHLVL=1
HOME=/root
LOGNAME=root
XDG_RUNTIME_DIR=/run/user/0
...
あー、shだ。
どおりで、/bin/bash って書かないと、動かない記述があるわけだ。
2019-02-12
2017-11-02
telnet でメール送信
# telnet mail.example.com 25
HELO foo.bar.com
MAIL FROM: user@foo.bar.com
RCPT TO: foo@example.com
DATA
From: user@foo.bar.com
Subjet: Test Mail
Hello world.
.
QUIT
HELO foo.bar.com
MAIL FROM: user@foo.bar.com
RCPT TO: foo@example.com
DATA
From: user@foo.bar.com
Subjet: Test Mail
Hello world.
.
QUIT
2017-08-18
VirtualHost とデフォルトサイト
これは常識なのかもしれないけど、
・サイトは、すべて VirtualHost で定義する。
・VirtualHost 定義の一番先頭に、
<VirtualHost *:80> </VirtualHost>
ってだけ書いておく。
・IP直打ちでアクセスされたときのために、デフォルトのドキュメントルート(/var/www/html)は空にしておく。
・IP直打ちでアクセスされたときのために、デフォルトのドキュメントルート(/var/www/html)は空にしておく。
・VirtualHostの定義は、httpd.conf の一番最後で行う。サイトごとに別ファイルで定義するときは、httpd.conf の一番最後で Include する。
・名前ベースのバーチャルホストでSSLする。
ってことをするようにした。
こうすることで、
・IP直打ちアクセスや意図しないHOST_NAMEでのアクセスは、全部、デフォルトのドキュメントルートへ流す。
ことができて、これらの意図しないアクセスはすべて 403 で捌けるなと。
でも、その前の前提として、httpd.conf で
でも、その前の前提として、httpd.conf で
<Directory "/var/www/html"> Options -Indexes +FollowSymLinks ・・・ </Directory>
ってしておくことと、
# rm /etc/httpd/conf.d/welcome.conf
って消しておいてね
2017-07-22
http/https のセッション数 を netstat の state ごとに表示する
watch使う場合、sed -e 's/[^A-Z]*//' がみそ。
もし sed -e 's/[^A-Z]*//' がなかった場合どうなるかは、試してみて。
こんなのも
もし sed -e 's/[^A-Z]*//' がなかった場合どうなるかは、試してみて。
watch -n 1 "netstat -ant | egrep ':(80|443) '| egrep 'EST|SYN|FIN|CLOSE'| awk {'print $6'} | sed -e 's/[^A-Z]*//' | sort | uniq -c"こんなのも
watch -n 2 "netstat -etpon | egrep ':(80|443) ' | egrep 'EST|SYN|FIN|CLOSE'"
2017-05-04
pacemaker リソース が使用する定義ファイル (httpd.conf、my.cnf など) を反映する
# crm configure property maintenance-mode=true # crm resource restart リソース名 # crm configure property maintenance-mode=false
こちらも参考にどうぞ
まとめサイト: Corosync と Pacemaker でクラスタ化されたサーバのメンテナス
2017-03-03
find でパーミッションとオーナー・グループを条件に検索して パーミッションを変更する
オーナー hoge に 644 与えてある /var/www/html 配下のファイルのパーミッションを 664 に変更する。
グループ hoge に 644 与えてある /var/www/html 配下のファイルのパーミッションを 664 に変更する。
オーナー hoge に 755 与えてある /var/www/html 配下のディレクトリのパーミッションを 775 に変更する。
グループ hoge に 755 与えてある /var/www/html 配下のディレクトリのパーミッションを 775 に変更する。
# find /var/www/html -perm 644 -type f -user hoge -print0 | xargs -0 chmod 664
グループ hoge に 644 与えてある /var/www/html 配下のファイルのパーミッションを 664 に変更する。
# find /var/www/html -perm 644 -type f -group hoge -print0 | xargs -0 chmod 664
オーナー hoge に 755 与えてある /var/www/html 配下のディレクトリのパーミッションを 775 に変更する。
# find /var/www/html -perm 755 -type f -user hoge -print0 | xargs -0 chmod 775
グループ hoge に 755 与えてある /var/www/html 配下のディレクトリのパーミッションを 775 に変更する。
# find /var/www/html -perm 755 -type f -group hoge -print0 | xargs -0 chmod 775
2017-03-02
2016-12-20
連番ファイルを100個作る
連番ファイルは
ってすれば、file001, file002, ...みたいにゼロ埋めしてくれて桁が揃う。
# touch file{1..100}ってすれば、file1からfile100という空っぽのファイルを作ってくれる。
# touch file{001..100}ってすれば、file001, file002, ...みたいにゼロ埋めしてくれて桁が揃う。
10KBのファイルを100個作りたかったら
# dd if=/dev/zero of=file bs=1024 count=10
ってやって10KBのファイルを作ってから
# for i in `seq -w 1 100`; do cp file file${i}; doneってやれば、file001, file002, ...って作れる。
2016-12-13
wgetでサイトをバックアップ
これでいけるかと。
WordPressサイトは、feedを取得しないようにするとこうなる。
あと、コメントのフィードリンクがページ中にあると、せっかくダウンロードしたページがフォルダに変わってしまって
feed
っていうファイルだけになってしまうので、先にこちらを参考にlinkを消してください。
■[WordPress] コメントの RSS フィードリンクを削除する
http://jz5.jp/2013/11/23/remove-wordpress-comment-rss/
だけ追加してもOKだった。
その他、wget のオプションはここがすごくわかりやすかった。
■ダウンロードコマンドwgetのオプション一覧(linux)
http://blog.layer8.sh/ja/2012/03/31/wget_command/
wget -e robots=off\ --output-file=./wget.log\ --no-cache\ --html-extension\ --convert-links\ --page-requisites\ --restrict-file-names=nocontrol,windows\ --domains=www.example.com\ --no-parent\ --mirror\ --wait=1\ --waitretry=1\ --timeout=5\ http://www.example.com/
WordPressサイトは、feedを取得しないようにするとこうなる。
wget -e robots=off\ --output-file=./wget.log\ --no-cache\ --html-extension\ --convert-links\ --page-requisites\ --restrict-file-names=nocontrol,windows\ --domains=www.example.com\ --no-parent\ --mirror\ --wait=1\ --waitretry=1\ --timeout=5\ --exclude-directories=/feed\ http://www.example.com/
あと、コメントのフィードリンクがページ中にあると、せっかくダウンロードしたページがフォルダに変わってしまって
feed
っていうファイルだけになってしまうので、先にこちらを参考にlinkを消してください。
■[WordPress] コメントの RSS フィードリンクを削除する
http://jz5.jp/2013/11/23/remove-wordpress-comment-rss/
remove_action('wp_head', 'feed_links_extra', 3);
だけ追加してもOKだった。
その他、wget のオプションはここがすごくわかりやすかった。
■ダウンロードコマンドwgetのオプション一覧(linux)
http://blog.layer8.sh/ja/2012/03/31/wget_command/
2016-11-26
apachectl fullstatus の Request 列の改行を制御する
[root@websv ~] # which apachectl /usr/sbin/apachectl [root@websv ~] # less /usr/sbin/apachectl ... # |||||||||||||||||||| START CONFIGURATION SECTION |||||||||||||||||||| # -------------------- -------------------- # # the path to your httpd binary, including options if necessary HTTPD='/usr/sbin/httpd' # # # a command that outputs a formatted text version of the HTML at the # url given on the command line. Designed for lynx, however other # programs may work. if [ -x "/usr/bin/links" ]; then LYNX="/usr/bin/links -dump" else LYNX=none fi # # the URL to your server's mod_status status page. If you do not # have one, then status and fullstatus will not work. STATUSURL="http://websv:80/server-status" ... [root@websv ~] # man links ... -dump-width (alias for document.dump.width) Width of the dump output. ... [root@websv ~] # /usr/bin/links -dump http://websv:80/server-status/ ... Srv PID Acc M CPU SS Req Conn Child Slot Client VHost Request GET 0-0 19019 0/7/7 _ 0.00 58 0 0.0 0.03 0.03 127.0.0.1 websv01:80 /server-status HTTP/1.1 GET 1-0 19020 0/7/7 _ 0.00 18 0 0.0 0.03 0.03 127.0.0.1 websv01:80 /server-status/ HTTP/1.1 GET 2-0 19021 0/6/6 W 0.00 0 0 0.0 0.03 0.03 127.0.0.1 websv01:80 /server-status/ HTTP/1.1 GET 3-0 19022 0/6/6 _ 0.00 178 0 0.0 0.03 0.03 127.0.0.1 websv01:80 /server-status HTTP/1.1 GET 4-0 19023 0/6/6 _ 0.00 118 0 0.0 0.03 0.03 127.0.0.1 websv01:80 /server-status HTTP/1.1 ... [root@websv ~] # /usr/bin/links -dump http://websv:80/server-status/ -dump-width 192 ... Srv PID Acc M CPU SS Req Conn Child Slot Client VHost Request 0-0 19019 0/7/7 _ 0.00 39 0 0.0 0.03 0.03 127.0.0.1 websv01:80 GET /server-status HTTP/1.1 1-0 19020 0/6/6 W 0.00 0 0 0.0 0.03 0.03 127.0.0.1 websv01:80 GET /server-status/ HTTP/1.1 2-0 19021 0/6/6 _ 0.00 170 0 0.0 0.03 0.03 127.0.0.1 websv01:80 GET /server-status HTTP/1.1 3-0 19022 0/6/6 _ 0.00 159 0 0.0 0.03 0.03 127.0.0.1 websv01:80 GET /server-status HTTP/1.1 4-0 19023 0/6/6 _ 0.00 99 0 0.0 0.03 0.03 127.0.0.1 websv01:80 GET /server-status HTTP/1.1 ...
2016-11-22
MySQL サーバーシステム変数 のデフォルトを確認する方法
サーバーのコンパイル時のデフォルトおよび読み取られるオプションファイルに基づいて、サーバーが使用する値を表示するには、次のコマンドを使用します。
すべてのオプションファイルの設定を無視し、サーバーのコンパイル時のデフォルトに基づいてサーバーが使用する値を表示するには、次のコマンドを使用します。
実行中のサーバーによって使用される現在の値を表示するには、SHOW VARIABLES ステートメントを使用します。
引用:MySQL 5.6 リファレンスマニュアル 5.1.4 サーバーシステム変数
https://dev.mysql.com/doc/refman/5.6/ja/server-system-variables.html
mysqld --verbose --help
すべてのオプションファイルの設定を無視し、サーバーのコンパイル時のデフォルトに基づいてサーバーが使用する値を表示するには、次のコマンドを使用します。
mysqld --no-defaults --verbose --help
実行中のサーバーによって使用される現在の値を表示するには、SHOW VARIABLES ステートメントを使用します。
引用:MySQL 5.6 リファレンスマニュアル 5.1.4 サーバーシステム変数
https://dev.mysql.com/doc/refman/5.6/ja/server-system-variables.html
2016-07-16
yum の使い方
- インストール
yum install hogehoge
- アップデートの確認
yum check-update
- アップデート
yum update hogehoge
- 削除
yum remove hogehoge
- インストール済みパッケージ一覧
yum list install
- 旧バージョンも含めてパッケージ一覧を表示する
yum --showduplicates list hogehoge
2016-02-27
Corosync と Pacemaker でクラスタ化されたサーバのメンテナス
普通に監視対象サービスを停止しちゃうとフェイルオーバーするので、
それを回避する方法。
1.メンテナンスモードを有効にする。
2.必要な作業を行う。
サービス停止してもフェイルオーバーしないので、設定ファイルいじったりできる。
停止したサービスは、起動してから次の手順へ。
停止は
開始は
再起動は
※その他、crmコマンドの詳細は、こちらのサイトがわかりやすかったです。
CRM CLI (command line interface) tool
3.メンテナンスモードを終了する。
以上!
それを回避する方法。
1.メンテナンスモードを有効にする。
crm configure property maintenance-mode=true
2.必要な作業を行う。
サービス停止してもフェイルオーバーしないので、設定ファイルいじったりできる。
停止したサービスは、起動してから次の手順へ。
停止は
crm resource stop リソース名
開始は
crm resource start リソース名
再起動は
crm resource restart リソース名
※その他、crmコマンドの詳細は、こちらのサイトがわかりやすかったです。
CRM CLI (command line interface) tool
3.メンテナンスモードを終了する。
crm configure property maintenance-mode=false
以上!
2016-02-16
systemctl と chkconfig と service の使い方まとめ
サービス一覧
自動起動設定
自動起動解除
サービス起動
サービス状態確認
サービス停止
# chkconfig --list # systemctl list-unit-files -t service
自動起動設定
# chkconfig hoge on # systemctl enable hoge.service
自動起動解除
# chkconfig hoge off # systemctl disable hoge.service
サービス起動
# service hoge start # systemctl start hoge.service
サービス状態確認
# service hoge status # systemctl status hoge.service
サービス停止
# service hoge stop # systemctl stop hoge.service
2016-02-01
CentOS 7 ClamAV インストール
yum install epel-release
yum install clamav clamav-update
vi /etc/freshclam.conf
------------------------------------------------------------
#Example
------------------------------------------------------------
/etc/sysconfig/freshclam
------------------------------------------------------------
#FRESHCLAM_DELAY=disabled-warn # REMOVE ME
------------------------------------------------------------
vi /etc/cron.weekly/clamscan
------------------------------------------------------------
#!/bin/bash
PATH=/usr/bin:/bin
# clamd update
yum -y update clamav clamav-update > /dev/null 2>&1
# excludeopt setup
excludelist=/usr/local/etc/clamscan.exclude
if [ -s $excludelist ]; then
for i in `cat $excludelist`
do
if [ $(echo "$i"|grep \/$) ]; then
i=`echo $i|sed -e 's/^\([^ ]*\)\/$/\1/p' -e d`
excludeopt="${excludeopt} --exclude-dir=$i"
else
excludeopt="${excludeopt} --exclude=$i"
fi
done
fi
# signature update
freshclam > /dev/null
# virus scan
CLAMSCANTMP=`mktemp`
clamscan --recursive --remove ${excludeopt} / > $CLAMSCANTMP 2>&1
[ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \
# report mail send
grep FOUND$ $CLAMSCANTMP | mail -s "Virus Found in `hostname`" root
rm -f $CLAMSCANTMP
------------------------------------------------------------
chmod 700 /etc/cron.weekly/clamscan
echo "/proc/" >> /usr/local/etc/clamscan.exclude
echo "/sys/" >> /usr/local/etc/clamscan.exclude
インストールされたファイルの一覧
yum-utils をインストールして
でもいいが、追加で yum-utils をインストールしなくても
で確認できる。
# repoquery --list パッケージ名
でもいいが、追加で yum-utils をインストールしなくても
# rpm -ql パッケージ名
で確認できる。
2015-11-15
php で include/require しているファイルの一覧を find と grep で作成する
include (require) で読み込んでいるファイルの一覧がほしかったので、find & grep で作ってみた。
例:common/html というディレクトリに共通ファイル(ヘッダやフッタ)がある場合
例:common/html というディレクトリに共通ファイル(ヘッダやフッタ)がある場合
# cd /var/www/html # find . -type f -name "*.php" | xargs grep -E "common/html"
2015-09-05
[postfix] 特定のアドレスから送信されたメールのうち拒否られた送信先のログを抽出する
メール配信システムなんかを組んで、一括送信した後に、宛先不明などで拒否られたログを抽出する方法。
1.メールログから送信元で抜いて、そこからキューIDだけ取り出してファイルに保存する
2.キューIDをファイルから読み込んで検索し、相手メールサーバの応答コードが5XXのログを抜く。
1.メールログから送信元で抜いて、そこからキューIDだけ取り出してファイルに保存する
# grep -E "from=" /var/log/maillog | grep -o -E "[0-9A-Z]{10}" > ~/hoge.txt
2.キューIDをファイルから読み込んで検索し、相手メールサーバの応答コードが5XXのログを抜く。
# grep -f ~/hoge.txt /var/log/maillog | grep "said: 5" > ~/hoge_5XX.log
2015-07-16
カレントディレクトリ以下のファイル、ディレクトリに対して移動・削除・chownする
■カレントディレクトリ以下のファイル、サブディレクトリ、隠しファイル全てのオーナーとグループを変更する
■カレントディレクトリ以下のファイル、サブディレクトリ、隠しファイル全てを移動する
■カレントディレクトリ以下のファイル、サブディレクトリ、隠しファイル全てを削除する
chown -R hoge:hoge ./ ※ ./* としたいところだが、* を付けると隠しファイルが変更対象にならない。
■カレントディレクトリ以下のファイル、サブディレクトリ、隠しファイル全てを移動する
mv * .[^\.]* 移動先ディレクトリ
■カレントディレクトリ以下のファイル、サブディレクトリ、隠しファイル全てを削除する
rm -r * .[^\.]* ※ 確認メッセージが鬱陶しかったら、-rf とする。
ディレクトリ以下全てのファイルとディレクトリの権限を一覧で取得する
# ls -aRl / > /tmp/permission_list
または
# find -printf "%p\t%TY-%Tm-%Td %TH:%TM:%TS\t%u\t%g\t%#m\n" > /tmp/permission_list
登録:
投稿 (Atom)
綺麗に見せることに全振りした操法大会の訓練を50日間するよりも、月1回でいいから基本的な操作方法の訓練を実施すべきだと思うのは俺だけか
7月に県の消防操法大会がある。 市内分団の持ち回り制で、今年はうちの分団が出場する。 俺も前回回ってきたときに、選手として出た。 訓練が5月から始まっている。 週5日。 訓練時間は2時間だけど、その前に準備する時間もあり、訓練後の撤収時間も必要だから、拘束時間は約3時間。 俺が...
-
Chrome拡張機能を自作してやってみよう! ♪できるかな できるかな ・・・ 無理ぽ (´・ω・`) iframeの中に、実際のメッセージのやり取りが表示されるので、 $(function(){ $('iframe[name^="spa...
-
本題に入る前に、まずは、sh/bash系のシェルで標準出力と標準エラー出力をリダイレクトする方法から。 現在使用中のシェルを確認するには、 # echo $SHELL とすれば確認できる。 その他、利用できるシェルを確認するには # cat /etc/shell...
-
Internet Explorer も、気がついてみたらFirefoxまでも、複数タブ・ウィンドウ間で同一セッションになってしまった。確か、Firefox 3.6のときは、ウィンドウが別だったらセッションも別になっていたと思ったのになぁ... で、同一セッションになって困るの...