httpd.confのServerNameに関して

ServerNameは結局のところ、GET等でアクセスしてくるアクセスの最後に

http://aaaa.com/aaa

の部分に「/(スラッシュ)」がないとき、

WEBサーバ自体が「/」を追加するんだけれども

その時の検索するホスト名を

http://aaaa.com/aaa ⇒ http://ServerName/aaa/に変更する仕組みである。

 

ビジネスのシーンにおいて、アプリケーション側できちんとURLをつけるのであれば

あまり活用するシーンはないのかなーっと。

まぁコアなユーザがURL直接自分で入れて最後にスラッシュを付け忘れたときに

問題が起こるくらいと考えればあんまり気にする設定でないと思う。

 

検証 

2345番ポートのWEBサーバへのアクセス

[root@chefclient tmp]# telnet 127.0.0.1 2345
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
GET /kenken
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://localhost/kenken/">here</a>.</p>
<hr>
<address>Apache/2.2.27 (CentOS) Server at localhost Port 80</address>
</body></html>
Connection closed by foreign host.
[root@chefclient tmp]#

 

 

/etc/profileの勉強

Linuxを知っていると思っていた自分がいきなり/etc/profileを読んで読めなかった。。。

 

pathmunge () {
case ":${PATH}:" in
*:"$1":*)
;;
*)
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
esac
}

 

このpathmunge関数の意味。

 

①これはまずecho ${PATH}を実行しています。

case ":${PATH}:" in

 

②次にそのpathの中身を確認しており

*:"$1":*)

 

③該当するパスが含まれている場合は、環境変数のPATHに追加しませんという意味です。

 

簡単にいうと

こういうスクリプトを作って

pathmunge () {
case ":${PATH}:" in
*:"$1":*)
;;
*)
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
esac
}


pathmunge /root/bin
(CentOS6のrootユーザではデフォルトで/root/binは追加されています。)

 

実行すると

sh -xつけて

何もパスを追加しませんってことです。

 

 

idコマンド

idコマンドすごい

 

当たり前なのかもしれませんが

id -gn

実行結果:root

 

id -un

実行結果:root

 

id -g

実行結果:0

 

id -u

実行結果:0

 

すばらしい。みなさんもどうぞ

suになったあとにどのユーザか確認したい

Linuxでsuになったあとのユーザidを知りたい。

回答:idコマンド

 

不正解:who

 

理由:idコマンドは、suで変更になったユーザ情報をもとにstructのpasswdから情報を取ってくる。

一方

whoコマンドは、/var/log/wtmpを読んでいる。構造体はutmpになる。

 

Linux恐るべし。。。

ある文字が来たら改行したい

会社で考えていたが全然思いつかなかった。

家ではすぐに思いついた。。。不思議。

 

さくらエディタで正規表現にチェックを入れた状態で

アルファベットの「O(オー)」が来たら改行コードを入れるっていう方法。

置換 O(オー)

変換したい文字 O\r\n

 

どうだ!!

 

viでsedしても良いですよ。

 

 

 

 

 

expect改良版

expect5.sh

 

#!/bin/sh

HENSU=$1

expect -c "
set timeout 5
spawn ssh kenken@$HENSU
expect \"s password:\"
send \"kenken\n\"
expect \"~]\"
send \"su -\n\"
expect \"パスワード:\"
send \"kenken\n\"
send \"ls /tmp\n\"
expect {
default {exit 2}
"cannot" {exit 9}
}
"

main2.sh

[root@chefserver ~]# cat main2.sh
#!/bin/sh

while read line
do

arg1=`cat script.txt | awk '{print $1}'`

 

sh expect5.sh $arg1

if [ $? = 2 ]
then
echo "OK"

else

echo "NG"

fi

http通信をtcpdump(DNS通信も含む)

ipv6を無効にして再度チャレンジ

コマンド:tcpdump port 53 or port 80

コマンド:curl --head http://yahoo.co.jp

 

結論:ipv6の通信はなくなった模様。

   無駄な通信が発生することを考えれば、ipv6は無効化することが正しいと思う。

 

 

21:36:26.306825 IP 192.168.3.150.44743 > google-public-dns-a.google.com.domain: 30583+ A? yahoo.co.jp. (29)
21:36:26.307460 IP 192.168.3.150.32973 > google-public-dns-a.google.com.domain: 23277+ PTR? 8.8.8.8.in-addr.arpa. (38)
21:36:26.368077 IP google-public-dns-a.google.com.domain > 192.168.3.150.44743: 30583 2/0/0 A 182.22.59.229, A 183.79.135.206 (61)
21:36:26.368375 IP 192.168.3.150.48478 > f1.top.vip.ssk.yahoo.co.jp.http: Flags [S], seq 4223514307, win 14600, options [mss 1460,sackOK,TS val 434099 ecr 0,nop,wscale 7], length 0
21:36:26.374213 IP google-public-dns-a.google.com.domain > 192.168.3.150.32973: 23277 1/0/0 PTR google-public-dns-a.google.com. (82)
21:36:26.374423 IP 192.168.3.150.43402 > google-public-dns-a.google.com.domain: 51717+ PTR? 150.3.168.192.in-addr.arpa. (44)
21:36:26.397197 IP f1.top.vip.ssk.yahoo.co.jp.http > 192.168.3.150.48478: Flags [S.], seq 3170009284, ack 4223514308, win 14480, options [mss 1460,sackOK,TS val 3974962699 ecr 434099,nop,wscale 9], length 0
21:36:26.397250 IP 192.168.3.150.48478 > f1.top.vip.ssk.yahoo.co.jp.http: Flags [.], ack 1, win 115, options [nop,nop,TS val 434128 ecr 3974962699], length 0
21:36:26.397379 IP 192.168.3.150.48478 > f1.top.vip.ssk.yahoo.co.jp.http: Flags [P.], seq 1:168, ack 1, win 115, options [nop,nop,TS val 434128 ecr 3974962699], length 167
21:36:26.400547 IP google-public-dns-a.google.com.domain > 192.168.3.150.43402: 51717 NXDomain 0/0/0 (44)
21:36:26.400879 IP 192.168.3.150.54250 > google-public-dns-a.google.com.domain: 48938+ PTR? 229.59.22.182.in-addr.arpa. (44)
21:36:26.428707 IP f1.top.vip.ssk.yahoo.co.jp.http > 192.168.3.150.48478: Flags [.], ack 168, win 31, options [nop,nop,TS val 3974962731 ecr 434128], length 0
21:36:26.431882 IP f1.top.vip.ssk.yahoo.co.jp.http > 192.168.3.150.48478: Flags [P.], seq 1:557, ack 168, win 31, options [nop,nop,TS val 3974962732 ecr 434128], length 556
21:36:26.431891 IP 192.168.3.150.48478 > f1.top.vip.ssk.yahoo.co.jp.http: Flags [.], ack 557, win 123, options [nop,nop,TS val 434163 ecr 3974962732], length 0
21:36:26.431918 IP f1.top.vip.ssk.yahoo.co.jp.http > 192.168.3.150.48478: Flags [F.], seq 557, ack 168, win 31, options [nop,nop,TS val 3974962732 ecr 434128], length 0
21:36:26.432110 IP 192.168.3.150.48478 > f1.top.vip.ssk.yahoo.co.jp.http: Flags [F.], seq 168, ack 558, win 123, options [nop,nop,TS val 434163 ecr 3974962732], length 0
21:36:26.461710 IP f1.top.vip.ssk.yahoo.co.jp.http > 192.168.3.150.48478: Flags [.], ack 169, win 31, options [nop,nop,TS val 3974962763 ecr 434163], length 0
21:36:26.461736 IP google-public-dns-a.google.com.domain > 192.168.3.150.54250: 48938 1/0/0 PTR f1.top.vip.ssk.yahoo.co.jp. (84)