タグ: コマンド

使用していないNICのMACアドレスを確認

MACアドレスはifconfigコマンドで使っているものについては確認できる。

# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0D:E4:AC:37:62
          inet addr:192.168.1.10  Bcast:192.168.1.1  Mask:255.255.255.0
          inet6 addr: fe80::fa0f:41ff:fe0c:306d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:20927967 errors:0 dropped:4346 overruns:0 frame:0
          TX packets:13823127 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1704246343 (1.5 GiB)  TX bytes:1443416185 (1.3 GiB)
          Interrupt:169

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:209435 errors:0 dropped:0 overruns:0 frame:0
          TX packets:209435 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:15911333 (15.1 MiB)  TX bytes:15911333 (15.1 MiB)

こんなカンジで。
しかし、実は使用していないNICがあって、そこの部分のMACアドレスを確認したい時がある。
簡単なのは、繋いでもう一回ifconfigすればいいってことなんだけど、
遠隔だったりしたらそうも行かないので、別のコマンドで確認。

# dmesg | grep eth5
tg3 0000:0c:00.1: eth5: Tigon3 [partno(BCM95718) rev 5717100] (PCI Express) MAC address d8:cb:8a:aa:dd:cc
tg3 0000:0c:00.1: eth5: attached PHY is 5718C (10/100/1000Base-T Ethernet) (WireSpeed[1], EEE[1])
tg3 0000:0c:00.1: eth5: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[1] TSOcap[1]
tg3 0000:0c:00.1: eth5: dma_rwctrl[00000001] dma_mask[64-bit]

こんなカンジ。
これでETH5のMACアドレスは「d8:cb:8a:aa:dd:cc」ってことが分かる。

CP コマンドのアレヤコレヤ

普段ボーッと使っているCPコマンドですが、
ときどき最後のスラッシュの有無について忘れるのでメモ。

cp -r /usr/katz/ /usr/katz2/

コレコレ。この場合。
すでに『katz2』というディレクトリが存在する場合は
『katz2』ディレクトリの中に『katz』ディレクトリを作ってコピーする。
『katz2』ディレクトリが存在しない場合は
『katz2』ディレクトリを作成して、『katz』ディレクトリの中身をコピーする。

/usr/katz/某某某某某
をコピーしたい時に、

ディレクトリがあるとコピー結果は
/usr/katz2/katz/某某某某某
ディレクトリがないと
/usr/katz2/某某某某某
となる。

親切心で「コピー先のディレクトリ名、忘れないように予め作っとこう」とかやっちゃうと
後でゲンナリすることになるってことで。

ちなみに
cp -r /usr/katz/ /usr/katz2/

cp -r /usr/katz/ /usr/katz2
でも結果は同じ。

sed で置き換え

sed でテキストファイルの中を置き換えたりすることが可能。

sed -i "s/hogehoge/moemoe/g" /root/test.txt

hogehoge部分をmoemoeに置き換えることができる。

見つけたい条件が置き換えたい部分を違う場合は、

sed -i "/^認めたく/ s/クワトロ・バジーナ/シャア・アズナブル/g" /root/test.txt

「認めたく」で始まる行にある「クワトロ・バジーナ」を「シャア・アズナブル」に置き換える。

sed -i "/.dll$/ s/^/#/g" httpd.conf

「.dll」で終わる行の行頭に「#」を付けてコメントアウトする。

こんなカンジで。
【 sed 】 文字列の置換,行の削除を行う – ITPro

シェルをバックグラウンドで動かし続ける

普通にシェルをバックグラウンドで動かすには、コマンドの最後に「&」をつける。

./hogehoge.sh &

みたいに。

更にこれを、sshのウインドウを閉じても継続させるには「nohup」コマンドをつける。

nohup ./hogehoge.sh &

こんなカンジで。

 

yum で 足りないファイルを探す

コマンドが見つかりません、だったら「yum search ******」で。

今回は必要なファイルが見つからないとき。

いろんな所で必要になる「libc.so.6」。
が、どのパッケージに入ってるのかわからない。
ので、yum の whatprovides というオプションで探してみる。

#yum whatprovides libc.so.6
 Loaded plugins: fastestmirror
 Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
 glibc-2.12-1.132.el6.i686 : The GNU libc libraries
 Repo : base
 Matched from:
 Other : libc.so.6

これで必要なのは6行目に書いてある「glibc-2.12-1.132.el6.i686」ということになる。

USBメディアをマウント

コンソールのみの端末でUSBメモリを認識・マウントさせる方法。

  1. 事前に
    mkdir /mnt/usb
    chmod 777 /mnt/usb
    でUSBのマウントポイントを作成しておく。
  2. USBメモリを接続する。
  3. dmesg | grep sd*
    で、接続情報確認。
    (以下はsdbに接続情報があったと仮定。)
  4. mount -t vfat /dev/sdb1 /mnt/usb/
    で、マウントする。

アンマウントするときは

  1. umount /mnt/usb/
    で。
    アクセスランプが消えていることを確認して、取り外す。

CentOSで「コマンドが見つかりません」とか言われる (yum search)

[ locate ]とか、[ c++ ]とか、minimumでインストールするといろいろなものが入っていない状態。
後から必要に応じて入れることになるのだけれど、そのコマンド名自体で入るわけではないものが結構ある。
今回はその探し方。

yum search ******

で。
locateだとこんなカンジ。

# yum search locate
Loaded plugins: fastestmirror
Determining fastest mirrors
* base: ftp.iij.ad.jp
* extras: centos.ustc.edu.cn
* updates: centos.mirror.cdnetworks.com
base | 3.7 kB 00:00
extras | 3.4 kB 00:00
updates | 3.4 kB 00:00
updates/primary_db | 768 kB 00:00
============================= N/S Matched: locate ==============================
mlocate.x86_64 : An utility for finding files by name
which.x86_64 : Displays where a particular program in your path is located

Name and summary matches only, use "search all" for everything.

なので、

yum install locate

ではなく

yum install mlocate

でインストール、ということになる。

locateのインストール

locateがない・・・
findは入ってるけど、locateも使いたい。
そんな時は

yum install mlocate

これでまだ行けそう。
どうしようもない時は

find / -name hogehoge

で行くしか無い。

du で指定ディレクトリの容量を見たい

たまにはmanを見てみるのもいいもので。
du の man ページ を見てみたら

–max-depth=N
コマンドライン引数より最大 N 個下の階層までのディレクトリを (–all の指定があればファイルも)集計する。 –max-depth=0 なら、–summarize と同等となる。

とのこと。

つーことで

du -h --max-depth=1 /var/www/

とかやってみたら

58G     /var/www/html
924K    /var/www/icons
224K    /var/www/error
8.0K    /var/www/cgi-bin
58G     /var/www/

みたいな。

便利。

chkconfig とか command not found の時 (path の通し方)

普通のユーザからだとchkconfigとか打っても

bash: chkconfig: command not found

って言われる~

ので、

vi /home/自分のホームディレクトリ/.bash_profile

でパスを通す。

10行目辺りに

PATH=$PATH:$HOME/bin

とあるので、この下に通したいところを追加する。

PATH=$PATH:/sbin

とか。
これで保存すれば、次回ログイン時から有効になる。

wheel グループのみ root 化 と root でのログイン禁止

useradd username

普通に個人ユーザを作成。

passwd username

パスワードを変更。

usermod -G wheel username

個人ユーザをwheelグループに参加させる。

vi /etc/login.defs

login.defs ファイルをエディタで開く。

SU_WHEEL_ONLY yes

「SU_WHEEL_ONLY」の項目を一番最後に追記して保存。

vi /etc/pam.d/su

で、6行目辺りにある

#auth        required        pam_wheel.so use_uid

のコメントアウトを外して保存。

この段階までやることでwheelグループに入っているユーザのみが、suコマンドでrootユーザになれる。
他のユーザがsuで、正しいパスワードを入れても「su:パスワードが違います」になる。

このままだとrootパスワードを知っている人はそのままrootでsshログインできてしまうのでこれを防ぐ。

vi /etc/ssh/sshd_config

で、39行目辺りにある

#PermitRootLogin yes

PermitRootLogin no

に変更して保存。

/etc/init.d/sshd restart

でsshを再起動。
あらためてrootでログインしてみる。

「認証に失敗しました」なら成功。

次に、毎回suで入るのもいいけど、そうすると無いとは思うけどキーロガーでrootパスワードを取得することが可能。
さらに実行ユーザは結局rootになってしまって、誰が操作したのかわからない状態。
なのでsudoを使ってみる。

visudo

でsudoの設定ファイルを覗いてみる。

 88 ## Allows people in group wheel to run all commands
 89 # %wheel ALL=(ALL) ALL
 90
 91 ## Same thing without a password
 92 # %wheel ALL=(ALL) NOPASSWD: ALL

のようなところがあるので、92行目のコメントアウトを外す。
これで

sudo yum update

とかやるとき、wheelに所属するユーザであればパスワードも聞かれず、そのまま作業することが出来る。
92行目の代わりに89行目のコメントアウトを外せばsudoの度にパスワードを聞かれることになるけど、
ほんのちょっとセキュリティは上がるのかな?

で、sudoで運用していくことにしたのでsuコマンドでrootになることを止めたいんだが。
どうすれば?

vi /etc/pam.d/su

で変更した部分をwheel所属のユーザがいないグループに設定すればいいのかな?

wgetのオプション

wgetでサイトをダウンロードする際に必要になるオプション。

-nH … ホスト名のディレクトリを作らない
-b … スタート後にバックグラウンドに移行する
-r … 再帰ダウンロードを行う
-c … 部分的にダウンロードしたファイルの続きから始める
-N … ローカルにあるファイルよりも新しいファイルだけ取得する
-p … HTML を表示するのに必要な全ての画像等も取得する
-k … HTML 中のリンクをローカルを指すように変更する
-l … 再帰時の階層の最大の深さを NUMBER に設定する (0 で無制限)

-D … 取得対象のドメインをコンマ区切りで指定する
–exclude-domains … 取得対象でないドメインをコンマ区切りで指定する
-I … 取得対象のディレクトリを指定する
-X … 取得対象でないディレクトリを指定する
-A … 取得対象の拡張子をコンマ区切りで指定する
-R … 取得対象でない拡張子をコンマ区切りで指定する

-P … ファイルを指定ディレクトリ配下に保存する
–limit-rate … ダウンロード速度を制限する

このぐらいかな?

例:
wget -r -c -N -p -k -l 0 -D katzplus.com -X /storage/audio/,/storage/video/,/wordpress/ -R pdf,doc,xls,ppt -P /var/www/html/backup/ http://katzplus.com/storage/