UNIX/Linux

MacでSubversion

Macには標準でSubversionが入ってるみたいなので設定してみます。 $ svn --version svn, version 1.6.15 (r1038135) compiled Jan 29 2011, 15:18:15 Copyright (C) 2000-2009 CollabNet. Subversion is open source software, see http://subversion.apache…

rsyncでバックアップ

macからCentOSのバックアップを取るためrsyncを使います。 rsync [option] [コピー元] [コピー先]mac$ mkdir backup mac$ rsync -azv -e "ssh -p 10022" anmino@192.168.54.10:/home /Users/anmino/backup receiving file list ... done home/ home/anmino/ …

CentOSでMySQLのインストールと設定

remiレポジトリを指定してMySQLのインストール $ sudo yum --enablerepo=remi install mysql-server Complete! $ mysql --version mysql Ver 14.14 Distrib 5.5.11, for Linux (x86_64) using readline 5.1関連パッケージをインストールします。 $ sudo yum …

CentOSでPHPのインストールと設定

remiレポジトリとepelレポジトリを使うので有効にします。 $ sudo vi /etc/yum.repos.d/remi.repo enabled=1 $ sudo vi /etc/yum.repos.d/epel.repo enabled=1remiレポジトリを指定してインストールする $ sudo yum --enablerepo=remi install php Complete!…

CentOSでApacheのインストールと設定

httpdパッケージをインストールします。 $ sudo yum -y install httpd $ yum info httpd Loaded plugins: fastestmirror Installed Packages Name : httpd Arch : x86_64 Version : 2.2.3 Release : 45.el5.centos Size : 3.3 M Repo : installed Summary : …

CentOSの標準パッケージでインストールできるソフトウエアより新しいバージョンのソフトウエアをインストールする

Apache,MySQL,PHPをインストールする前にバックアップを取っておきます。 と言ってもバーチャルマシン用のファイルをコピーするだけです。 書類フォルダの中の仮想マシンフォルダの中にファイルがあります。 MySQLやPHPはCentOSの標準パッケージでインストー…

CentOSのログ

CentOSのログは /var/log ディレクトリにあります。 内容 ファイル名 認証関係 /var/log/secure メール関連 /var/log/maillog cron関連 /var/log/cron ブート関連 /var/log/dmesg パッケージ関連 /var/log/yum.log 全般 /var/log/messages ログはテキストフ…

CentOSのパッケージの管理(yum)

yumはLinuxのRPM互換パッケージ管理システム。 /etc/yum.confや/etc/yum以下のディレクトリが設定ファイル。 yumコマンドは基本的に下記のように使用する。 yum [] [] [] コマンド 概要 list 利用可能なパッケージの一覧を表示 list installed インストール…

CentOSの不要なサービスを停止する

インストールされているサービスの一覧を表示する 標準のランレベルは3なので3の値を確認する $ chkconfig --list NetworkManager 0:off 1:off 2:off 3:off 4:off 5:off 6:off acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off anacron 0:off 1:off 2:on 3:on 4…

CentOSでファイアーウォール(iptables)を設定する

iptablesの設定を確認する $ sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination RH-Firewall-1-INPUT all -- anywhere anywhere Chain FORWARD (policy ACCEPT) target prot opt source destination RH-Firewall-1-INPUT al…

CentOSで公開鍵認証をする

まずクライアント(Mac)で公開鍵を作成します。 mac$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/Users/anmino/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase a…

CentOSでユーザーを追加しsudoを使えるようにする

CentOSはインストールしたばかりなのでユーザーを追加します。 # useradd anmino # passwd anmino Changing password for user anmino. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.追加したユー…

CentOSのIPアドレスとホスト名を指定する

インストールした時にIPアドレスとホスト名を指定しなかったのでインストール後に指定します。 IPアドレスやホスト名がわからないとSSHで接続できません。 デフォルトゲートウェイの確認 # ip route show 192.168.54.0/24 dev eth0 proto kernel scope link …

CentOS 5.5(x86_64)のインストール

さくらVPSとかが流行ってるみたいなんで、契約する前に標準OSのCentOS5.5x86_64をVMware Fusionにインストールしてみました。 ネットワークインストール用イメージをダウンロード http://ftp.yz.yamagata-u.ac.jp/pub/linux/centos/5.5/isos/x86_64/CentOS-5…

syslogをリアルタイムでフィルタリングする

#!/bin/sh #syslogfilter.sh if ! [ $# -eq 1 ]; then echo "フィルタリングのキーワードを指定してください" exit 1 fi while read str < /var/log/syslog; do echo $str | grep $1 done

ユーザごとのログイン履歴を作成する

#!/bin/sh #getuserlog.sh if ! [ -d log ]; then mkdir log fi month=${1:-$(LANG=en_US.UTF-8 date +"%-m" --date 'last month')} searchmonth=$(LANG=en_US.UTF-8 date +"%b" --date "2009-$month-01") IFS_DEF=$IFS IFS=" " for username in $(cut -d":"…

suを使用せずにrootでログインしたら知らせる

#!/bin/sh #loginroot.sh logfilenames='/var/log/secure /var/log/secure.1' onehouragetime=$(LANG="en_US.UTF-8" date +"%b %_d %H:" --date '1 hour age') grep -h ^"$onehouragotime" $logfilename \ | grep 'login: pam_unix(login:session): session …

アカウント期限切れのユーザリスト作成

#!/bin/sh #limituser.sh limituserlists=limituserlists.$(date +"%Y%m%d") today=$(($(date +%s) / 86400 )) IFS_DEF=$IFS IFS=" " for list in $(cat /etc/shadow); do username=$(echo $list | cut -d":" -f1) exdate=$(echo $list | cut -d":" -f8) if …

SSHによるポートフォワーディング接続

#!/bin/sh #sshpf.sh [ユーザ名@]接続先ホスト名 転送先ポート名 if [ -z "$2" ]; then echo "Usage: sshpf.sh [username@]hostname port" else hostmane=`echo "$1" | sed 's/.*@//'` remoteport=$2 localport=$(( remoteport+10000 )) ssh -N -f -L "$loca…

CPUの負荷状況を調べる

#!/bin/sh #locadaverage.sh limit=1.00 msg(){ cat << END ロードアベレージが$1を超えています `top -b -n 1` END } loadav=`/usr/bin/uptime | sed 's/^.*load average: //'` IFS_BAK=$IFS IFS="," set -- $loadav IFS=$IFS_BAK for val in $1 $2 $3; do …

ネットワーク上のホストリストを作成する

#!/bin/sh #hostlist.sh broadcast='192.168.1.255' ping -c 1 -b $broadcast &> /dev/null sleep 1 IFS_BAK=$IFS IFS=" " for line in `ping -c 1 -b $broadcast 2> /dev/null`; do ip=`expr "$line" : '.*from \(.*\):'` time=`expr "$line" : '.*time\(.*…

ポートの状況を調べる

#!/bin/sh #portck.sh HostName PortNumber [PortNumber...] host=$1 shift while [ -n "$1" ]; do if nmap $host -p $1 | grep " open " > /dev/null; then mopen="$mopen$1 " else mclose="$mclose$1 " fi shift done [ -n "$mopen" ] && echo "$hostの開…

pingコマンドの結果をログファイルに収集する

#!/bin/sh #autoping.sh logfile='ping.log' if [ -z "$1" ]; then echo "Usage: autoping.sh hostname [hostname...]" exit 9 fi daytime="`date +"%b %d %H:%M:%S"` " while [ -n "$1" ]; do if ping -c 1 $1 > /dev/null; then echo "$daytime PING is re…

プロセスを監視する

#!/bin/sh #processcheck.sh プロセス名 [プロセス名2...] psck(){ local dm dm=`ps axww | grep $1 |grep -v grep| grep -v processcheck.sh` [ -n "$dm" ] && return 0 return 1 } message="" while [ -n "$1" ]; do psck $1 || message="$message$1 " shi…

ディスク容量がしきい値を越えていないかを監視する

#!/bin/sh #diskusage.sh [しきい値] limit=80 [ -n "$1" ] && limit="$1" msg(){ cat << END 警告: 使用容量が$1%を超えているパーティションがあります `df -h` END } IFS_BAK=$IFS IFS=" " for line in `df -h`; do val=`expr "$line" : '.*\([1-9][0-9]\…

メールを送信する

#!/bin/sh #sendmail.sh listfile=list.txt #メールアドレスのリスト mailfile=mailfile.txt #1行目は題名、2行目以降は本文 if [ ! -f $listfile ]; then echo "Recipient list file $listfile not exist.." exit 1 fi if [ ! -f $mailfile ]; then echo "M…

対話的にfindコマンドを実行する

#!/bin/sh #find.sh echo -n "ファイル名: " read name if [ -n "$name" ]; then select option1 in "と一致する" "を含む" "で始まる" "で終わる"; do [ -n "$option1" ] && break done case $option1 in "と一致する") name="$name" ;; "を含む") name="*$…

ハードディスクの不良ブロック検査

#!/bin/sh #checkbadblocks.sh hdlists=$(fdisk -l | grep '^/dev/' | cut -d" " -f1) for hd in $hdlists; do hdfilename=$(basename $hd) badblocks -v -o badblocks.$hdfilename $hd > /dev/null 2>&1 if [ -s badblocks.$hdfilename ]; then echo "デバ…

ゾンビプロセスを報告する

#!/bin/sh #reportzombie.sh declare -a zombiepids mombiepids=($( ps -eo pid,stat | grep 'z' \ | sed 's/^ \{1,\}//g' | cut -d" " -f1)) if [ ${#zombiepids[*]} -gt 0 ]; then echo "ゾンビプロセスは ${#zombiepids[*]} 個です" ps -f -p ${zombiepid…

CPU使用率の高いユーザを特定する

#!/bin/sh #highuser.sh pslists=$(mktemp /tmp/pslist.XXXXXXX) useridlists=$(mktemp /tmp/userlist.XXXXXXXX) results=$(mktemp /tmp/results.XXXXXXXX) ps -eo uid,pcpu --sort uid --no-headers \ | sed -e 's/^ \{1,\}//' -e 's/ \{1,\}/ /' > $pslist…