シェルスクリプト

Linuxの日本語環境について
echo $LANG

LANG=ja_JP.utf8
一時的→打つ
ユーザ→/home/ホームディレクトリ/.i18nに入れとく
みんな→/etc/sysconfig/.i18nに入れとく

sshクライアントのフォントによって文字化けすることも…
(Linux)コマンドを連結して行う「;」「&」「&&」「||」の違い : 3流プログラマのメモ書き


■メール

[root@dti-vps-srv740 ~]# cat pschk_mail.sh
#!/bin/bash

#監視するプロセス名を定義する
PROCESS_NAME="smbd"

#メールを送信するメールアドレスを指定する
MAILTO=root@localhost

#メール本文に使用するファイルを指定する
MAILFILE=/var/tmp/pschk_mail.txt

#監視するプロセスが何個起動しているかカウントする
count=`ps -ef | grep $PROCESS_NAME | grep -v grep | wc -l`

#監視するプロセスが0個の場合に、処理を分岐する
if [ $count = 0 ]; then

#0個場合は、サービスが停止している事をメールする
echo "$PROCESS_NAME"

#メールの本文を生成
echo "ホストネーム" > $MAILFILE
hostname >> $MAILFILE
echo "現在時刻" >> $MAILFILE
date "+%Y/%m/%d %H:%M:%S" >> $MAILFILE
echo "$PROCESS_NAME ダウン" >> $MAILFILE
echo "" >> $MAILFILE
echo "以下プロセス数です" >> $MAILFILE
echo "$count" >> $MAILFILE

#メールの件名を生成
MAIL_SUB="$PROCESS_NAME"

#メールを送信する
mail -s $MAIL_SUB $MAILTO < $MAILFILE

else
echo "$PROCESS_NAME OK"
fi




■ユーザ追加スクリプト

#!/bin/bash

echo
echo "useradd "$1" -m" "を実行します"
echo "問題がなければEnterを押してください"
read x
useradd $1 -m

echo
echo "nice grep "$1" /etc/passwd" "を実行します"
echo "問題がなければEnterを押してください"
read x
nice grep "$1" /etc/passwd

echo
echo "ls -l /home | grep" $1 "を実行します"
echo "問題がなければEnterを押してください"
read x
ls -l /home |grep $1


■if文

#!/bin/bash

if [ -z $1 ] || [ -z $2 ] ; then
echo "引数が足りません、コマンドを確認してください"
read wait

elif [ $1 = share ] ; then
echo "共有ユーザ$1の登録を開始します"
read wait
else
echo "所有者$1の登録を開始します"
read wait
fi

VPSの設定(iptables等)

以下参照

ファイアウォールiptablesを簡単解説~初心者でもよくわかる!VPSによるWebサーバー運用講座(4) - さくらのナレッジ

iptablesの設定方法 – さくらのサポート情報

iptables --append INPUT --proto tcp --dport 22 --jump ACCEPT

iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP みたいな

 iptables -(n)Lで確認

service iptables save ←大事

service iptables restart ←これで完了

 

Linuxコマンド集 - 【iptables】パケットフィルタリングを設定する:ITpro

iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
①データを持たないパケットの接続を破棄する

②SYNflood攻撃と思われる接続を破棄する
③ステルススキャンと思われる接続を破棄する

 

-m multiport --dportsでポートをまとめて(,や:で)書ける

 

 

TCP wrapperについて

/etc/allow、/etc/deny プロセス名:ホスト名(IP) ALL:ALL

tcpdchkコマンドで書式のチェックができる…はず 

 

 

 

LPIC 202 sambaサーバ

sambaサーバについて

コンフィグファイル⇒/etc/samba/smb.conf

centOSにはデフォルトで入ってる(入ってなかったらyumで入れる)

 workgroup項目にWORKGROUP(windowsのワークグループ名)を入れる

 hosts allow項目に許可IPを登録

 一番下にシェアするフォルダの情報入力

[Share]# 任意の名前を指定
path = /home/share# 共有フォルダを指定
writable = yes# 書き込み許可
guest ok = yes# ゲストユーザー許可
guest only = yes# 全てゲストとして扱う
create mode = 0777# フルアクセスでファイル作成
directory mode = 0777# フルアクセスでフォルダ作成

 

pdbedit — SAM データベース (Samba ユーザーのデータベース) を管理する

 ⇒ sambaユーザ作成 pdbedit -u ユーザ名 -a(追加)

   (既存のユーザを使うため、先にuseraddでユーザ作成!)

smbpasswd

 ⇒ オプションなしでパスワード変更

 

load printers = no
printing = bsd
printcap name = /dev/null

LPIC 201 バックアップ

フルバックアップ

差分バックアップ

増分バックアップ

 オンサイト(同一拠点) オフサイト(別拠点) 

 /procやswapはバックアップしない

 

ローカル

mt -f テープ操作 fsf(早送り) bsf(巻き戻し)

 デバイスファイル名 st0(自動巻き戻し) nst0(巻き戻し無し)

ネットワーク経由

rsync コピー元 コピー先 ⇒ ネットワーク経由でデータコピー

 -a(-rlptgoD パーミッションやグループを保持したまま) -z(ip) -v(詳細表示) -r(ecurve再帰的) -u(増分?)

 rsync -avz ~/dir1 nyakka@remote:/home/nyakka

 --delete (送信元で削除したファイルを送信先でも削除)

LPIC 201 ソースからのソフトウェアインストール

 

gzip(gunzip) 圧縮・(解凍)

bzip2(bunzip2)

 -d(解凍) -c(標準出力へ)

tar -zxvf(解凍(bzipはj)、展開、詳細表示、ファイル指定)

 こんな書き方もできる gzip -dc example.tar.gz | tar xf - ←-は標準入力からという意味

  -c(アーカイブ作成) -t(表示のみで展開しない)

patch -d(ディレクトリ) -p0,1,2(パッチファイル内のパスを削除する階層) -C(テスト) -R(取り消して元に戻す)

  patch-kernel ⇒ 大量のパッチを一気に当てることができる

 

基本、引数無しでカレントディレクトリ内のものに対して作業する

 ※(make -Cでディレクトリ指定もできる --file=ファイル名でMakefileの指定も可能)

  1. Makefileの作成 sourceと一緒に取ってきた./configureスクリプト   (make generateは逆?)
  2. make ← コンパイル
  3. make install ← パスの通った場所へコピー&パーミッション変更

    ⇒ソフトウェアやコマンドの完成

 変更するときはmake cleanしてから再度make

 

 起動時に共有ライブラリに問題が出たら、環境変数LD_LIBRARY_PATHを編集する必要があったりする