2010年2月6日 星期六

[Cisco] 一個簡單的LAN的基本設定流程

Beforehand
1. Set all the hostname
2. Privileged mode password
3. Global configuration mode password
4. Turn on telnet

Router Setting
1. Let the port which connected with switch be up-up
2. Set serial-to-serial clock rate. Make them up-up

VLAN Setting (if it's necessary)
1. Set ip and gateway of switch on vlan 1
2. Cisco Router Trunk Setting
3. Cisco Switch Trunk Setting
4. Create vlan
5. Assign vlan to ports
6. Save the configuration

Chose the routing protocol
   RIP Routing Protocol (version 2)
   OSPF Routing Protocol

以上只是講個概念  一個網路是怎麼從第一層設定到第三層
最後到成功可以Routing

2010年1月22日 星期五

[Linux] Wireshark tarball for openSuSE

First, go to the wireshark's web.  
http://www.wireshark.org/download.html
Click the hyperlink named Source Code to download Wireshark.tar.bz

# tar -jxvf wireshark.x.x.x.tar.bz -C /root
# cd wireshark.x.x.x

If you want to read more information about the wireshark installation
You can
# less INSTALL  or # less README

# ./configure
# make
# make install

To start wireshark
# wireshark

If it didn't work, please check for the path of lib

-------------------------------------------------------------------------------------------

For openSuSE 11.2 here is some solutions to make it work
First, you have to remake the libpcap.
Because there is no pcap.h in the lib.
Then, you have to check for libpcap version.
Go to the website and download the tarball
http://www.tcpdump.org/

# tar -zxvf libpcap.x.x.x.tar.gz -C /root
# cd libpcap.x.x.x
# ./configure
# ./make
# ./make install

# cd wireshark.x.x.x
# ./configure
# ./make
# ./make install

After starting wireshark, you will get a message like "libwiretap.so.0, No file or Directory".
It means there is no libwiretap.so.0 in your lib.
But you can use command "locate" to find the file.

Then make sure your lib
# cp -aR /usr/local/lib/* /usr/lib/

Down

2009年12月22日 星期二

[Linux] Incremental Backup Shell Script

#!/bin/bash
#判斷下列目錄是否存在,如不存在則建立
[ -d /var/backup ] || mkdir /var/backup
[ -d /var/log/backup ] || mkdir /var/log/backup

#完全備份,先把該資料夾所有的acl寫入至一個檔案。檢查snapshot_file是否存在,
#如果存在則刪除,主要是不影響完全備份。tar 照相snapshot_file並
#建立且壓縮full-date.tar.gz的tarball,運用tee把過程寫入輸出至last-backup且
#輸入至backup-date.log。$?=0 為真
full (){ getfacl -R /home > /home/acls-`date +%F`
         [ -f /var/log/backup/snapshot_file ] && rm /var/log/backup/snapshot_file
         tar -cz -g /var/log/backup/snapshot_file -f /var/backup/full-`date +%F`.tar.gz /home | tee /var/log/backup/last-backup > /var/log/backup/backup-`date +%F`.log
         x=`echo $?`
         touch /var/log/backup/last-backup
       }

#增量備份,先把該資料夾所有的acl寫入至一個檔案。
#tar 比對之前的照相snapshot_file,比對後且重新照張相,並將比對出不一樣的檔案
#建立且壓縮incremental-date.tar.gz的tarball,運用tee把過程寫入輸出至last-backup且
#輸入至backup-date.log。$?=0 為真
incr (){ getfacl -R /home > /home/acls-`date +%F`
         tar -cz -g /var/log/backup/snapshot_file -f /var/backup/incremental-`date +%F`.tar.gz /home | tee /var/log/backup/last-backup > /var/log/backup/backup-`date +%F`.log
         x=`echo $?`
       }

#取得今天是星期幾,存於DOW內
DOW=`date +%a`

#判斷DOW,只有星期一才要完全備份,其餘工作天都使用增量備份
case "$DOW" in
Mon) full ;;
Tue) incr ;;
Wed) incr ;;
Thu) incr ;;
Fri) incr ;;
esac

#用ssh連線遠端同步
rsync -a /var/backup -e ssh root@10.120.14.117:/root/

# x!=0 為偽。兩個函式執行完tar的$?的值
if [ $x -ne 0 ] ; then
echo "" | mail -s "Backup Failed!" root
fi

exit 0
#

2009年12月20日 星期日

[Linux] Apahce 整合到 syslog-ng

SLES 10

/etc/apache2/httpd.conf
--------------------------
|       ErrorLog  syslog:user
|       LogLevel  warn

上面那個LogLevel改不改無所謂  到最後會被覆蓋掉

/etc/sysconfig/apache2
---------------------------
|      APACHE_ACCESS_LOG="syslog:user  combined"
|      APACHE_LOGLEVEL="[自選]"

以上大綱  剩下看文件
syslog-ng設定檔的部分就跟老師上課的一樣



不過最後訊息不能全部整合,訊息如下
Dec 20 21:40:47 Linux gconfd (root-13560): Resolved address "xml:readwrite:/root/.gconf" to a writable configuration source at position 0


Dec 20 21:40:51 Linux kernel: ISO 9660 Extensions: Microsoft Joliet Level 3

Dec 20 21:40:51 Linux kernel: ISO 9660 Extensions: RRIP_1991A

Dec 20 21:40:51 Linux zmd: NetworkManagerModule (WARN): Failed to connect to NetworkManager

Dec 20 21:40:58 Linux zmd: Daemon (WARN): Not starting remote web server

Dec 20 21:41:50 Linux httpd2-prefork[12891]: [error] [client 192.168.150.1] File does not exist: /srv/www/htdocs/index


但是apache原始的access_log,如下
192.168.150.1 - - [20/Dec/2009:21:17:32 +0800] "GET / HTTP/1.1" 200 553 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322)"


192.168.150.1 - - [20/Dec/2009:21:17:32 +0800] "GET /icons/folder.gif HTTP/1.1" 304 - "http://192.168.150.22/" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322)"

192.168.150.1 - - [20/Dec/2009:21:17:32 +0800] "GET /icons/blank.gif HTTP/1.1" 304 - "http://192.168.150.22/" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322)"

192.168.150.1 - - [20/Dec/2009:21:18:03 +0800] "GET /index.html HTTP/1.1" 404 1046 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322)"

 
也就是說不能整合進來資訊太多了,整能簡簡單單的看到user連結錯誤的網頁會有個error紀
錄,但是apache內建的資訊卻是相當龐大的,有連線回應和連線錯誤都有紀錄,再來還有很
多很多,有興趣的請看apache的log文件,有格式教學。

http://httpd.apache.org/docs/2.2/mod/mod_log_config.html
 

2009年12月19日 星期六

[Linux] Shell Script Homework2

2.設計一個名為manymaxmin的script,使其可以接收不固定的多個數字參數,顯示數字中最大的及最小的,如果都一樣大,則顯示都一樣大。
##########################################################
#!/bin/sh

for x in $@
do
  if [ -z "$max" ]
  then
    max=$x
    min=$x
  fi
  if [ $max -lt $x ]
  then
    max=$x
  elif [ $min -gt $x ]
  then
    min=$x
  else
    continue
  fi
done

if [ $min -eq $max ]
then
  echo "equal"
else
  echo "Max=$max"
  echo "Min=$min"
fi

exit 0
##########################################################

3.設計一個名為createmyfiles的script,以迴圈配合touch指令,產生十個檔案,檔名分別為myprog1.c,myprog2.c,...,myprog10.c。
##########################################################
#!/bin/sh

for ((i=1;i<=10;i++))
do
  touch myprog$i.c
done

exit 0
##########################################################

4.設計一個名為lastfiles的script,顯示目前目錄中最近被修改的n個檔案檔名。
##########################################################

#!/bin/sh
ls -t | head -n $1

exit 0
##########################################################
5.設計一個名為mvfiles的script,可以將所有副檔名為.c檔案,副檔名更名為.cpp,更名前後的副檔名均自命令列輸入。並將更名的結果顯示出來。
##########################################################

#!/bin/sh
for file in *$1
do
  mv $file `basename $file $1`$2
  echo renamed $file to `basename $file $1`$2
done

exit 0
#########################################################

2009年12月9日 星期三

[Linux] SLES 10 安裝 Joomla 所需套件

Apache2所需套件與模組
    apache2
    apache2-devel
    apache2-doc
    apache2-mod_auth_mysql
    apache2-mod_php5
    apache2-prefork
    libapr-util1
    libapr-util1-devel
    libapr1
    libapr-devel
PHP所需套件與模組
    apache2_mod_php5
    php5
    php5-bz2
    php5-devel
    php5-gd
    php5-mysql
    php5-zlib
MySql所需套件與模組
    apache2-mod_auth_mysql
    mysql
    mysql-client
    mysql-devel
    mysql-shared
    per1-DBD-mysql
    php5-mysql

有些不一定是必要的,只是習慣裝一裝,日後問題也少
啟動apache2、mysql、解壓縮joomla至apache2網頁空間內

mysql啟動時,請設定root密碼,啟動時會有相關訊息
joomla相關檔案的owner和group改成  u: wwwrun   g: www
configuration.conf資料夾內就有範例,補上Database的相關資訊及可


 

2009年12月3日 星期四

[Linux] Shell Script Homework1

Linux Shell Script Programming hw 1
----

1.設計一個名為showme的script,藉由環境變數及一些Linux指令,使其可以顯示資訊如下:
##########################################################
#!/bin/sh
echo "Login ID: $LOGNAME"
echo "My Home: $HOME"
echo "List My Home Directory"
ls -l /root
echo "My Shell: $SHELL"
echo "Hostname: $HOSTNAME"
pwd
ls -l

exit 0
##########################################################

2.設計一個名為verbvar的script,利用read輸入一個簡單的英文動詞,在其前加入一個to印出
原形,字尾加ing印出作為進行式,字尾加ed印出作為過去式
##########################################################
#!/bin/sh
echo -n "Please Enter The Verb:"
read word
echo "Present tense: to ${word}"
echo "Past tense: ${word}ed"
echo "Progressive tense: ${word}ing"

exit 0
##########################################################

3.設計一個名為addtwo的script,使其可以接收兩個數字參數,並將其相加後的結果顯示出來,
如果參數個數不夠或太多,就不執行運算,而顯示一段訊息,提示出正確的執行方式必須給
兩個參數。
##########################################################
#!/bin/sh
if [ $# -eq 2 ]
then
  echo "sum = `expr $1 + $2`"
else
  echo "Usage: ./addtwo number1 number2"
fi

exit 0
##########################################################

4.設計一個名為mycal的script,使其可以接收三個數字參數,第一、三個參數為數字,第二
個參數為運算子(+-*/其中之一)以多層的if計算其結果,並將其結果顯示出來,如果參數個
數不夠或太多,就不執行運算,而顯示一段訊息,提示出正確的執行方式。如果中間的運
算子是/,而第三個參數是0,則顯示除數不可為0
##########################################################
#!/bin/sh
if [ $# -eq 3 ]
then
  if [ "$2" = "+" ]
  then
    echo "result = `expr $1 + $3`"
  elif [ "$2" = "-" ]
  then
    echo "result = `expr $1 - $3`"
  elif [ "$2" = "*" ]
  then
    echo "result = `expr $1 \* $3`"
  elif [ "$2" = "/" ]
  then
    echo "result = `expr $1 / $3`"
  else
    echo "you have worng format"
  fi
else
  echo "you have worng format"
fi

exit 0
##########################################################

5.設計一個名為getmax的script,使其可以接收兩個數字參數,將較大的數顯示出來,如果
都一樣大,則顯示都一樣大。
##########################################################
#!/bin/sh
if [ $1 -gt $2 ]
then
  echo "Max = $1"
fi
if [ $1 -eq $2 ]
then
  echo "Equals"
fi
if [ $1 -lt $2 ]
then
  echo "Max = $2"
fi

exit 0
##########################################################

6.設計一個名為checkfile的script,使其可以接收一個檔案名稱作為參數,若此名稱不是目
前工作目錄的檔案或目錄,則顯示此名稱不存在,如果是檔案,則顯示其檔案內容,如
果是一目錄則顯示此目錄內的清單。
##########################################################
#!/bin/sh
if [ -e "$1" ]
then
  if [ -f "$1" ]
  then
    cat $1
  elif [ -d "$1" ]
  then
    ls -l $1
  else
    echo "permission deny"
  fi
else
  echo "no file or directory"
fi

exit 0
##########################################################

7.設計一個名為newerfile的script,使其可以接收兩個檔案名稱作為參數,並將日期較新的
檔案名稱顯示出來。
##########################################################
#!/bin/sh
if [ $1 -nt $2 ]
then
  echo "$1 is newer"
else
  echo "$2 is newer"
fi

exit 0
##########################################################

8.設計一個名為avglen的script,使其可以接收一個檔案名稱(文字檔)作為參數,計算此檔
平均每一列有多少bytes。提示:使用wc -l < 檔名; 用man查一下wc的用法
##########################################################
#!/bin/sh
x=`wc -l < $1`
y=`wc -c < $1`

echo "$y $x"
echo "average bytes per line is `expr $y / $x`"

exit 0
##########################################################

9.設計一個名為createtodayfile的script,以touch指令產生一個檔案,檔名中含有今天的日
期,例如myfile20090706.txt。date +%Y...., 其餘date的日期格式, 請以man指令查詢
##########################################################
#!/bin/sh
x=`date +%Y%m%d`
touch myfile$x.txt

exit 0
##########################################################

10.設計一個名為addfiles的script,可自命令列讀取參數產生檔案allfile,如下,每加入一個
檔案,隔2秒,如果重覆執行,則覆蓋原檔案。
##########################################################