Linux » 履歴 » リビジョン 2
« 前 |
リビジョン 2/3
(差分)
| 次 »
kanata, 2025/04/13 16:12
Linux¶
みんなの役に立つかもしれないと思った物をメモ
- 目次
- Linux
- KnowHow
- Tool
- Memo
KnowHow¶
コマンドラインからgmailを送る¶
■python で SMTP 認証を行ってメールを送信する
http://t2y.hatenablog.jp/entry/20090705/1246772990
の snakemail.py を使うと送れる。スクリプト1本で動く。
とても便利です。
ログ監視時に特定のキーワードを引っ掛けて色を着ける¶
以下の2ファイルを作る
rcg.pl¶
#!/usr/bin/perl -w
use strict;
use Term::ANSIColor qw(:constants);
my %target = ();
while (my $arg = shift) {
my $clr = shift;
if(($arg =~ /^-/) | (!$clr)) {
print "Usage: rcg [regex] [color] [regex] [color] ...\n";
exit;
}
#
# Ugly, lazy, pathetic hack here
#
$target{$arg} = eval($clr);
}
my $rst = RESET;
while(<>) {
foreach my $x (keys(%target)) {
s/($x)/$target{$x}$1$rst/g;
}
print;
}
今だとcczeというのがあるのでこっちの方が便利そうです
syslog.sh¶
#!/bin/sh
# 色つきシスログのtail -f
RCG="/usr/local/bin/rcg.pl"
tail -f /var/log/messages |${RCG} '.*ERROR.*' 'BOLD . RED' \
'.*Error.*' 'BOLD.RED' \
'.*WARNING.*' 'BOLD.BLUE' \
'.*DEBUG.*' 'YELLOW' \
'.*INFO.*' 'GREEN' \
'.*NOTICE.*' 'GREEN' \
'.*LOGIN.*' 'CYAN' \
'.*session.*' 'CYAN' \
'.*fail.*' 'RED' \
'.*deny.*' 'RED' \
'.*Deny.*' 'RED' \
'.*denied.*' 'RED' \
'.*Denied.*' 'RED' \
'.*refused.*' 'RED' \
'.*Unable.*' 'RED' \
'.*down.*' 'MAGENTA'
exit 0
で、以下の通り、実行権限つけたりした後、syslog.shを実行すると、シスログに色がついた状態で tail -f してログが見れる。
同じやり方でアクセスログとかも色付けられます。
# chmod ugo+x rcg.pl
# mv -i rcg.pl /usr/local/bin
# chmod ugo+x syslog.sh
# ./syslog.sh
また、rcg.pl は該当箇所を色付けできるので
# cat test.txt | rcg.pl 'error' 'BOLD . RED'
みたいに使うと、特定の箇所だけ色付けして表示できる。
perlの ANSIColor.pm というやつを使って実現している。指定できる色は、以下の通り。
CLEAR RESET BOLD DARK UNDERLINE UNDERSCORE BLINK REVERSE CONCEALED
BLACK RED GREEN YELLOW BLUE MAGENTA CYAN WHITE
ON_BLACK ON_RED ON_GREEN ON_YELLOW ON_BLUE ON_MAGENTA ON_CYAN ON_WHITE
よくアクセスしてきてるIPアドレス TOP100を出力¶
ワンライナーでいける。
# cat /var/log/httpd/access_log*|awk '{print $1}'|grep -v '::1'|sort|uniq -c|sort -nr|head -100
IPアドレスがどこの国から来てるか調べる¶
http://cc.wariate.jp/ さんのお世話になることで可能になる。
ありがとうございます。
こんなシェルスクリプトを作った。nslookupがインストールされていることが前提
whereDoYouComeFrom.sh¶
#!/bin/sh
if [ $# = "0" ]
then
echo "ex>${0} [ip address].."
exit 1
fi
if echo "${1}"|grep l >/dev/null
then
# Display only Country "-l"
SWITCH="ON"
shift
fi
for WORD in "${@}"
do
REVERS_IP=`echo ${WORD}|awk -F'.' '{print $4,".",$3,".",$2,".",$1}'|sed -e 's/ /
/g'`
COUNTRY=`nslookup -type=TXT ${REVERS_IP}.cc.wariate.jp|grep '"'|awk -F'"' '{prin
t $2}' `
if [ "${SWITCH}" = "ON" ]
then
echo "${COUNTRY}"
else
echo "${WORD} ${COUNTRY}"
fi
done
exit 0
で、以下みたいに使う
# whereDoYouComeFrom.sh 182.22.59.229
182.22.59.229 JP
Linuxでファイル・ディレクトリ監視を行う『inotify』¶
Linuxでファイル・ディレクトリ監視を行う『inotify』
http://orebibou.com/2015/04/linux%E3%81%A7%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%BB%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E7%9B%A3%E8%A6%96%E3%82%92%E8%A1%8C%E3%81%86%E3%80%8Einotify%E3%80%8F/
inotifywaitを用いたファイルのバージョニング・バックアップスクリプトの作成
http://orebibou.com/2015/05/inotifywait%E3%82%92%E7%94%A8%E3%81%84%E3%81%9F%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%8B%E3%83%B3%E3%82%B0%E3%83%BB%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2/
ファイルやディレクトリの編集・変更などに応じてプログラムを実行させる『incron』
http://orebibou.com/2015/04/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%84%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%81%AE%E7%B7%A8%E9%9B%86%E3%83%BB%E5%A4%89%E6%9B%B4%E3%81%AA%E3%81%A9%E3%81%AB%E5%BF%9C%E3%81%98/
再帰的にフォルダを監視できるincronライクなコマンド『Watcher』
http://orebibou.com/2015/05/%E5%86%8D%E5%B8%B0%E7%9A%84%E3%81%AB%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%82%92%E7%9B%A3%E8%A6%96%E3%81%A7%E3%81%8D%E3%82%8Bincron%E3%83%A9%E3%82%A4%E3%82%AF%E3%81%AA%E3%82%B3%E3%83%9E%E3%83%B3/
ddとsshを使ってネットワークごしにディスクイメージをコピーする¶
ローカルのディスクをサーバにコピーする場合¶
$ dd if=デバイスファイル | gzip -1 - | ssh ユーザ名@ホスト名(IPアドレス) dd of=コピー後のファイル名
dd if=デバイスファイル | gzip -1 - | ssh ユーザ名@ホスト名(IPアドレス) dd of=コピー後のファイル名¶
$ ssh ユーザ名@ホスト名(IPアドレス) dd if=コピー後のファイル名 | gzip -1 - | dd of=デバイスファイル
vimでリモート先のファイルをsshプロトコル経由で編集する¶
$ vim scp://ユーザ名@リモートホスト(IPアドレス)//編集対象のファイル
ファイルの削除前に、そのファイルを参照しているシンボリックリンクを確認する¶
$ ls -la $(find -L /シンボリックリンクがあるフォルダのPATH -samefile /オリジナルファイルのPATH)
$ ls -la $(find -L /{work,home} -samefile /work/test.txt)
『chattr』コマンドで属性を変更し追記専用や削除不可能なファイルにする¶
$ chattr [オプション] [属性の変更値] ファイル・ディレクトリ
| オプション | 説明 |
|------------+------------------------------------------------|
| -R | フォルダ内のファイルの属性値を再帰的に変更する |
| -V | 属性値の変更内容を詳細に出力する |
| -f | エラーメッセージを抑制する |
| 属性の変更値 | 説明 |
|--------------+------------------------------------------------|
| a | 追記編集のみ可能とする
| c | ファイルの圧縮を行う
| d | dumpの対象外にする
| e | 拡張フォーマットを使用する
| i | ファイルを変更出来なくする
| j | データのジャーナリングを行う
| s | 安全に削除させる(データブロック内を消去)
| t | 末尾のマージをできなくする
| u | ファイルを削除不可にする
| A | atime(アクセス時刻)を更新しない
| D | ディレクトリを同期的に更新する
| S | 同期的に更新する
属性値を追加する場合は「+」を、削除する場合は「-」の後に記述する。
extglobを有効にして「指定したパターン以外のファイル」を指定する¶
現状、有効か無効か確認する¶
$ shopt | grep extglob
extglobを有効にする¶
$ shopt -s extglob
extglobでできること¶
ワイルドカードの指定で以下が利用可能になる
| extglob | 説明 |
|-------------+------------------------------------------------|
| ?(パターン) | 指定したパターンに一致するものを指定
| *(パターン) | 指定したパターンを0回以上繰り返すものを指定
| +(パターン) | 指定したパターンを0回以上繰り返すものを指定
| @(パターン) | 指定したパターンのいずれかに一致するものを指定
| !(パターン) | 指定したパターンに該当しないものを指定
例
「/work」フォルダにある、「aaaaa.txt」および「bbbbb.txt」以外を抽出する
$ ls -la /work/!(aaaaa.txt|bbbbb.txt)
Linux Performance Observability Tools¶
Linux Performance Observability Tools
https://twitter.com/kamranahmedse/status/1501116746811547654
Linux Performance Observability Toolshttps://t.co/N9VkCQFAcw pic.twitter.com/3wfuNSQmPL
— Kamran Ahmed (@kamranahmedse) March 8 2022
Tool¶
peco - インタラクティブ・フィルタリングツール¶
Qiita - おい、peco もいいけど fzf 使えよ
http://qiita.com/b4b4r07/items/9e1bbffb1be70b6ce033
Qiita - 例えば、pecoをビルドしない
http://qiita.com/lestrrat/items/de8565fe32864f76ac19
up¶
up - the Ultimate Plumber
https://github.com/akavel/up
実行結果をインタラクティブに表示 Ctrl+x でそこまで記述したものをシェルスクリプトとして出力する
lnav - コンソール上でログをカラフルに見やすく表示してくれるログビューアコマンド¶
lnav
http://lnav.org/
インストール¶
# wget https://github.com/tstack/lnav/releases/download/v0.7.3/lnav-0.7.3-linux-64bit.zip
# unzip lnav-0.7.3-linux-64bit.zip
# mv lnav-0.7.3/lnav /usr/local/bin/
# cd /usr/local/bin/
# chmod +x ./lnav
基本的な使い方¶
# lnav /var/log/messages /var/log/httpd/access_log /var/log/httpd/error_log /var/log/secure /var/log/cron /var/log/maillog
ログに対してSQL検索もできるらしい。詳しくはこちら
Any tools¶
偏りに満ちたWayland時代のLinux Desktopおすすめアプリ 2024
https://joker1007.hatenablog.com/entry/2024/03/29/222656
Linuxでトラブルが発生したときの診断に役立つツール一覧、「事前のインストールを強く推奨」とリストの作者は語る
https://gigazine.net/news/20240327-linux-crisis-tools/
Memo¶
LPIC - Linux教科書
http://lpi.or.jp/linuxtext/admin.shtml
rcmdnk's blog - ssh周りの設定、Tipsのまとめ
http://rcmdnk.github.io/blog/2015/09/09/computer-remote/
メモ。。メモ。。 - 【RHEL】linuxのメモリ使用率(利用率)の計算方法
http://nopipi.hatenablog.com/entry/2015/09/13/181026
Qiita - 最強のSSH踏み台設定
http://qiita.com/kawaz/items/a0151d3aa2b6f9c4b3b8
余白の書きなぐり - sshで多段接続 (ncも-Wもない人用)
http://auewe.hatenablog.com/entry/2014/03/10/043030
RHEL/CentOSユーザーのUbuntu入門【コマンド、設定ファイル編】
http://dev.classmethod.jp/server-side/os/ubuntu-command-for-centos-useres/
CentOSで自宅サーバー構築
http://centossrv.com/
メモ。。メモ。。 - 【RHEL】linuxのメモリ使用率(利用率)の計算方法
http://nopipi.hatenablog.com/entry/2015/09/13/181026
Tech random memoranda - Linuxのブートシーケンスの基礎まとめ
http://nishidy.hatenablog.com/entry/2016/09/08/230637
GitBook - Linux Inside
https://www.gitbook.com/book/0xax/linux-insides/details
LISA2019 Linux Systems Performance
https://www.slideshare.net/brendangregg/lisa2019-linux-systems-performance
Linux Performance
http://www.brendangregg.com/linuxperf.html
SRE deep dive into Linux Page Cache # SRE が Linux ページ キャッシュを深く掘り下げる
https://biriukov.dev/docs/page-cache/0-linux-page-cache-for-sre/
Linuxサーバのセキュリティ監視プラクティス (概要編)
https://qiita.com/odorusatoshi/items/05209655932f0bb401ba
LinuxサーバーのTCPネットワークのパフォーマンスを決定するカーネルパラメータ – 3編
https://meetup-jp.nhncloud.com/1516