2013年11月20日 星期三

CentOS6 安裝 Tomcat6

yum -y install java
yum -y install tomcat6 tomcat6-webapps tomcat6-admin-webapps

CentOS system-config 工具清單

system-config-authentication
system-config-network-tui
system-config-date
system-config-printer
system-config-display
system-config-securitylevel
system-config-kdump
system-config-securitylevel-tui
system-config-keyboard
system-config-selinux
system-config-language
system-config-services
system-config-lvm
system-config-soundcard
system-config-network
system-config-time
system-config-network-cmd
system-config-users
system-config-network-gui

Tomcat6 Alias Directory 筆記

編輯  /usr/share/tomcat6/conf/server.xml
在 <Host>中加入
<context docbase="/usr/share/tomcat6/webapps/ROOT/test" path="/t"> </context>

2013年11月15日 星期五

CentOS 6.3 安裝 Monitorx

安裝 RPMforge
見 http://wiki.centos.org/zh-tw/AdditionalResources/Repositories/RPMForge

安裝相關套件

yum install rrdtool rrdtool-perl perl-libwww-perl perl-MailTools perl-MIME-Lite perl-CGI perl-DBI perl-XML-Simple perl-Config-General perl-HTTP-Server-Simple httpd

下載、安裝 monitorix
wget http://www.monitorix.org/monitorix-3.3.0-1.noarch.rpm
rpm -ivh monitorix-3.3.0-1.noarch.rpm

修改設定檔
/etc/monitorix.conf

開啟服務
chkconfig monitorx on
service monitorix start

測試

http://localhost:8080/monitorix

2013年11月13日 星期三

ZFS 筆記

mkdir /zfs
dd if=/dev/zero of=/zfs/zfs-1.dat bs=1024k count=100
dd if=/dev/zero of=/zfs/zfs-2.dat bs=1024k count=100
zpool create test /zfs/zfs-1.dat /zfs/zfs-2.dat

mkdir /test/n1
mkdir /test/n2
zfs create test/n1  (zfs create -o mountpoint=/n1 test/n1)
zfs create test/n2  (zfs create -o mountpoint=/n2 test/n2)

IIS appcmd 指令筆記(2012)

查詢指令
appcmd list app
appcmd list apppool
appcmd list backup
appcmd list site

備份還原
appcmd add backup MyBackup
appcmd restore backup MyBackup
備份檔路徑:%windir%\system32\inetsrv\backup

Site 維護
appcmd add site /name:MySite /bindings:http://*:80 /physicalpath:”d:\MySitePath”
appcmd delete site "MySite"

App 維護
appcmd add app /site.name:"MySite" /path:/MyApp /physicalpath:"d:\MySitePath\MyApp"
appcmd delete app "MySite/MyApp"

VI 顯示文章百分比

Ctrl+G

VI 執行 shell

:sh

VI 執行外部指令

:! "cmd"

VI 將部份內容 append 另一個檔案

:1,10w >> /tmp/newfile

VI 顯示行數

顯示行數
:set number 或 :set nu

取消行數
:set nonumber 或 :set nonu

2013年11月5日 星期二

PHP Functions、Class Methods、Variables 名稱大小寫

PHP Functions    Case Non-sensitive
Class Methods    Case Non-sensitive
Variables             Case sensitive

2013年10月23日 星期三

CentOS 6.3/4 安裝 ZFS

yum localinstall --nogpgcheck http://archive.zfsonlinux.org/epel/zfs-release-1-2.el6.noarch.rpm
yum update
yum install dkms gcc make kernel-devel perl
yum install spl zfs

chkconfig zfs on
reboot

2013年10月22日 星期二

BASH Script 系統變數

$n     表示第 n 個參數,$0 為 shell script 檔名
$#     命令行參數的個數
$0     目前程序的名稱
$?     上一個命令或函數的返回碼
$*     以"參數1 參數2 ... " 形式保存所有參數
$@     以"參數1" "參數2" ... 形式保存所有參數
$$     目前程序的PID

$!     最後一個在背景執行的程式的 process number
$-     傳遞給 shell 旗標 (flag)。 

BASH 字串操作

字串中的一部份字串
${var:n1:n2}

由左自右找到最後一個符合fo的將之後的顯示出來,*表示fo左邊可以有任意字元 
${var##*fo}   

由左自右找到第一個符合fo的將之後的顯示出來
${var#*fo}   

由右自左找到最後一個符合fo的將之後的顯示出來
${var%%*fo}   

由右自左找到第一個符合fo的將之後的顯示出來
${var%*fo}   

字串長度
${#var}

var!=null,則傳回var;否則 word
${var:-word}

var!=null,回傳var;否則設定變數值為 word,回傳變數值   
${var:=word}

var!=null,回傳var;否則顯示「var: message」,並中斷目前的命令或 script。
${var:?message}

var!=null,回傳 word 
${var:+word}

2013年10月18日 星期五

BASH ARRAY 筆記

宣告方法
array=(a1 a2)   
array=({1..10} {20,21}  [20]=a)

${array[*]}    陣列中所有元素   
${!array[*]}   陣列中所有元素指標
${#array[*]}   陣列中元素數目
${#array[0]}   # Length of item zero
${#array[@]}   陣列中有幾筆資料

輸出 方式
echo ${array[0]}

2013年10月9日 星期三

MySQL insert where 範例

create table a (i1 int, i2 int);

insert into a(i1,i2) select 1,2 from dual;

insert into a(i1,i2) select 1,2 from dual where 1=2;

2013年10月8日 星期二

Apace .htaccess範例

<files "a_*.php">
order allow,deny
allow from all
Authname "For Members"
Authtype Basic
AuthUserFile "/web/.htpasswd"
require valid-user
</files>


<files "main.php">
order allow,deny
allow from all
Authname "For Members"
Authtype Basic
AuthUserFile "/web/wifi/.htpasswd"
require valid-user
</files>

使用 PHP產生 Apache .htpasswd 檔案


  $password = crypt($_REQUEST['password'], base64_encode($_REQUEST['password'])); 
  file_put_contents('.htpasswd', sprintf("%s:$password", $_REQUEST['userid']));

2013年10月7日 星期一

LSI MegaRAID RAID Card 設定靜音

MegaCli64 -AdpSetProp  AlarmSilence -aALL

2013年9月30日 星期一

PHP-檢查 MAC格式是否正確

// 檢查 MAC 是否正確 正確回傳1
function check_mac($mac){
    $mac = strtr($mac, '-', ':');
    return ereg("([[:xdigit:]]{2}):([[:xdigit:]]{2}):([[:xdigit:]]{2}):([[:xdigit:]]{2}):([[:xdigit:]]{2}):([[:xdigit:]]{2}$)",$mac);
}

PHP-將字串中重覆的空白去除

function mrim($value){
  $s = '';
  for($i=0; $i    $t = (trim($value[$i])=='') ? $t + 1 : 0;
    if($t<2 .="$value[$i];<br" s="">  }
  return $s;
}

PHP應用,將網頁傳入變數的空白清除

foreach($_REQUEST as $_=>$__) $_REQUEST[$_] = trim($__);

Windows Server 2012 GUI 切換

伺服器以 Server 含 GUI 模式安裝
使用 PowerShell 將 Server Core 介面切換為 GUI 介面
 Install-WindowsFeature Server-Gui-Mgmt-Infra,Server-Gui-Shell –Restart  

以 Server Core 模式安裝
使用 Cmdlet Get-WindowsImage -ImagePath \install.wim 判斷「Server 含 GUI」映像 (例如 SERVERDATACENTER 而非 SERVERDATACENTERCORE) 的索引編號

執行 Install-WindowsFeature Server-Gui-Mgmt-Infra, Server-Gui-Shell –Restart –Source wim:\install.wim: 如果要使用 Windows Update (而非 WIM 檔案) 做為來源 Install-WindowsFeature Server-Gui-Mgmt-Infra,Server-Gui-Shell –Restart


使用 PowerShell 將 GUI 介面切換為 Server Core 介面 
Uninstall-WindowsFeature Server-Gui-Mgmt-Infra -restart,將伺服器切回 Server Core 模式 (需要重新啟動)

2013年9月13日 星期五

2013年8月31日 星期六

Windows Server 2012 重複資料刪除功能

Windows PowerShell 輸入以下指令來安裝重複資料刪除功能:
Import-Module ServerManager
Add-WindowsFeature -name FS-Data-Deduplication
Import-Module Deduplication

PHP 標準輸出/輸入/STDIN /STOOUT

$fp = fopen("php://stdin", "r");
$fp2 = fopen("php://stdout", "w");

while (!feof($fp)) {
    $buffer = fgets($fp);
    fputs($fp2, "input:$buffer");
}
fclose($fp);
fclose($fp2);

echo "exit";
?>

/etc/network/interface 範例

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual
        bond-master bond0

auto eth1
iface eth1 inet manual
        bond-master bond0

auto bond0
iface bond0 inet static
        address 10.0.0.1
        netmask 255.255.255.0
        gateway 10.0.0.254
        bond-slaves none
        bond-mode active-backup
        bond-miimon 100
        bond-fail-over-mac 1


auto vlan5
iface vlan5 inet manual
    vlan_raw_device bond0


auto eth2:1
iface eth2:1 inet static
    address 192.168.9.101
    netmask 255.255.0.0
    network 192.168.0.0
    broadcast 192.168.255.255
    gateway 192.168.1.1
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers 192.168.1.1

2013年8月30日 星期五

PHP Radius認證範例

$username = 'test';
$password = 'test';
$radserver = '192.168.6.4';
$radport = 1812;
$sharedsecret = '1234567890';

$res = radius_auth_open();
echo "$res
\n";

while(1){
  if (!radius_add_server($res, $radserver, $radport, $sharedsecret, 3, 3)) break;
  if (!radius_create_request($res, RADIUS_ACCESS_REQUEST)) break;

//  if (!radius_put_string($res, RADIUS_NAS_IDENTIFIER, isset($HTTP_HOST) ? $HTTP_HOST : 'localhost')) break;
//  if (!radius_put_int($res, RADIUS_SERVICE_TYPE, RADIUS_FRAMED)) break;
//  if (!radius_put_int($res, RADIUS_FRAMED_PROTOCOL, RADIUS_PPP)) break;
//  if (!radius_put_string($res, RADIUS_CALLING_STATION_ID, isset($REMOTE_HOST) ? $REMOTE_HOST : '127.0.0.1') == -1) break;

  if (!radius_put_string($res, RADIUS_USER_NAME, $username)) break;
  if (!radius_put_string($res, RADIUS_USER_PASSWORD, $password)) break;

  $req = radius_send_request($res);
  if (!$req) break;

  if($req== RADIUS_ACCESS_ACCEPT) echo "ok";
  else echo "fail";

  exit();
}

echo 'RadiusError:' . radius_strerror($res);

?>

參考文件
http://sophie.zarb.org/distrib/Mandriva/cooker/x86_64/rpms/php-radius/files/10 
http://php.net/manual/en/radius.constants.attributes.php

CentOS release 6.3 安裝 php radius 套件

yum install php-pear
yum install php-devel
yum install gcc

pear channel-update pear.php.net
pecl install radius

echo extension=radius.so > /etc/php.d/radius.ini

2013年6月28日 星期五

windows 下將所有目錄個別壓縮

for /f "delims=*" %a IN ('dir /a:d /b') do "C:\Program Files\7-Zip\7z" a %a.zip %a

for /d  %a IN (*) do "C:\Program Files\7-Zip\7z" a "%a".zip "%a"

Windows 系統環境變數

%ALLUSERSPROFILE%    C:\Documents and Settings\All Users
%APPDATA%        C:\Documents and Settings\{username} \Application Data
%COMPUTERNAME%        {computername}
%COMSPEC%        C:\Windows\System32\cmd.exe
%HOMEDRIVE%        C:
%HOMEPATH%        \Documents and Settings\{username}
%PATH%            C:\Windows\System32\;C:\Windows\;C:\Windows\System32\Wbem
%PATHEXT%        .COM; .EXE; .BAT; .CMD; .VBS; .VBE; .JS ; .WSF; .WSH
%PROGRAMFILES%        Directory containing program files
%PROMPT%        Code for current command prompt format. Code is usually $P$G
%SYSTEMDRIVE%        The drive containing the Windows root directory
%SYSTEMROOT%        The Windows root directory
%TEMP% and %TMP%    C:\DOCUME~1\{username}\LOCALS~1\Temp
%USERNAME%        {username}
%USERPROFILE%        C:\Documents and Settings\{username}
%WINDIR%        C:\Windows

%DATE%  當前日期
%TIME%  目前時間
%CD%    目前目錄
%ERRORLEVEL%    錯誤碼
%RANDOM%    Random number between 0 and 32767

VI redo 被 redo 的改變

Ctrl + R

VI 編輯多個檔案

v1 1 2 3 :n 切換下一個檔案 :N 切換上一個檔案

2013年5月23日 星期四

MySQL Unix timestamp 相關函式

FROM_UNIXTIME()   Format UNIX timestamp as a date

UNIX_TIMESTAMP() Return a UNIX timestamp

MySQL IP LONG 轉換函式

INET_ATON() Return the numeric value of an IP address


INET_NTOA() Return the IP address from a numeric value

2013年5月20日 星期一

CentOS 安裝 SOP

韌體更新

BIOS 的安全設置

GRUB / LILO 的密碼

更新軟體套件
yum update
TCP_WRAPPERS 阻止所有的主機連線
編輯 /etc/hosts.deny 加入
ALL: ALL@ALL, PARANOID

停用、反安裝不用的服務
acpid,apmd,atd,autofs,avahi-daemon,bluetooth,cpuspeed,cups,firstboot,gpm,haldaemon,hidd,hplip,ip6tables,isdn,lm_sensors,messagebus,nfslock,pcscd,portmap,rpcgssd,rpcidmapd,yum-updatesd,

修改系統 RunLevel
id:3:initdefault:

禁止 Control-Alt-Delete 鍵盤 重新啟動
編輯 /etc/inittab"
將 ca::ctrlaltdel:/sbin/shutdown -t3 -r now
改為:
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
執行:
/sbin/init q

限制 "/etc/rc.d/init.d" 存取權限
chmod -R 700 /etc/rc.d/init.d/*

隱藏系統資訊
編輯 /etc/rc.d/rc.local" 檔,最後一行加入
cat /dev/null > /etc/issue > /etc/issue.net
執行
mv /etc/issue /etc/issue.bak
mv /etc/issue.net /etc/issue.net.bak

修改DNS相關設定
編輯 /etc/host.conf,加入
order bind,hosts
multi on
nospoof on

設定本地時間及每天自動校對時間
yum -y install ntp
vi /etc/cron.daily/ntpdate.sh
#!/bin/sh
ntpdate -s watch.stdtime.gov.tw
chmod 755 /etc/cron.daily/ntpdate.sh

更新 Locate DB
updatedb
修改密碼相關設定
1.確認沒有空密碼
grep '^[^:]*::' /etc/passwd
2.限制密碼最短長度為 6
編輯 /etc/login.defs
修改 PASS_MIN_LEN 5 為 PASS_MIN_LEN 6

設定自動登出系統
編輯 /etc/profile ,添加這行
export TMOUT=300

清除歷史 Shell logging Bash
編輯 /etc/skel/.bash_logout ,添加這行
rm -f $HOME/.bash_history

封鎖 root 密碼
修改 /etc/shadow 的第二欄位將內容改成 *

設定 sudo
設定限制群組 wheel可以 sudo 不用再鍵入密碼就可變成 root 並開啟 sudo log 功能
yum install sudo
visudo
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL //預設值
%wheel ALL=(ALL) NOPASSWD: ALL //修改後
#Sudo log //並加入如下二行
Host_Alias SERVER = 127.0.0.1 //指定本機 IP
Defaults@SERVER log_year, logfile=/var/log/sudo.log //指定 log 格式及路徑設定 sudo log 二種格式 (log_host、log_year)寫入 /var/log/sudo.log 內容的差異

新增管理帳號及加入 wheel 群組

=============================================================================
取消普通用戶的控制臺使用許可權
rm -f /etc/security/console.apps/要消除的程式名

修改 /etc/services 權限,防止未經許可的刪除或添加服務
chattr +i /etc/services

不允許從不同的控制臺進行 root 登入
修改 /etc/securetty

化解外來 SYN 攻擊
編輯  /etc/rc.d/rc.local 加入以下設定,
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

#降低 syn重試次數

echo 1 > /proc/sys/net/ipv4/tcp_syn_retries
echo 1 > /proc/sys/net/ipv4/tcp_synack_retries

#加大syn_backlog (消耗記憶體)
echo "2048" > /proc/sys/net/ipv4/tcp_max_syn_backlog

2013年5月17日 星期五

使用 openssl 利用 gmail smtp 寄件範例

openssl s_client -connect smtp.gmail.com:587 -starttls smtp -crlf

ehlo
250-mx.google.com at your service, [xx.xx.xx.xx]
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH XOAUTH2
250 ENHANCEDSTATUSCODES
auth login
334 VXNlcm5hbWU6
base64 email
334 UGFzc3dvcmQ6
base64 password
235 2.7.0 Accepted
mail from:
250 2.1.0 OK fr1sm9516362pbb.26 - gsmtp
rcpt to:
250 2.1.5 OK fr1sm9516362pbb.26 - gsmtp
data
354  Go ahead fr1sm9516362pbb.26 - gsmtp
test

.
250 2.0.0 OK 1368765135 fr1sm9516362pbb.26 - gsmtp

quit



其它:
產生 auth plain
printf "\0account@gmail.com\0password"  | base64

產生 auth login
echo account@gmail.com |base64
echo password |base64

參考資料
http://www.fehcom.de/qmail/smtpauth.html

2013年3月26日 星期二

Proxmox VE 安裝 rsync

安裝相關軟體
apt-get dist-upgrade

apt-get update
apt-get install xinetd
apt-get install rsyncd

編輯 /etc/xinetd.d/rsync  內容如下

# default: off
# description: The rsync server is a good addition to an ftp server, as it \
# allows crc checksumming etc.
service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}

編輯
/etc/rsyncd.conf
/etc/rsyncd.secrets

設定 xinetd 開機執行
update-rc.d xinetd enable

2013年3月1日 星期五

使用UNIX date 指令轉換 時間 timestamp 表示方法

date +%s -d "2013-03-01 12:12:11"

date -d @1362129131 +'%F %H:%M:%S'

2013年2月27日 星期三

LEAF 使用 modules.tgz 載入自訂模組

#!/bin/sh

MODULES=""

diskfile=/var/lib/lrpkg/pkgpath.disks
MODPKG_NAME=modules.tgz
TMPDIR=/tmp

[ "$MODULES" = "" ] && exit


while read i
do
  echo "search $i"

  mount tmpfs -t tmpfs /lib/modules

  dev=$(echo $i|awk '{print $1}')
  type=$(echo $i|awk '{print $2}') 
  mountdir=$TMPDIR/$dev
  mkdir -p $mountdir
      
  mount $dev $mountdir

  cd /lib/modules
  [ -f $mountdir/modules.tgz ] && tar zxf /$mountdir/modules.tgz
  ln -s /lib/modules `uname -r`
  cd $OLDPWD
  
  [ -f /lib/modules/modules.dep ] && for I in $MODULES; do modprobe $I; done

  umount /lib/modules
  umount $mountdir

done < $diskfile

2013年2月18日 星期一

SMTP 使用NC範例

#!/bin/bash

/root/mail_raid_message.sh | nc smtp.server 25 2>&1 >/dev/null

mail_raid_message.sh 內容如下
#!/bin/bash
HELO=smtp.server
FROM=""
TO=""
DATE=$(date '+%a, %d %b %Y %H:%M:%S %z')

echo $DATE
echo "HELO $HELO"
echo "MAIL FROM:$FROM"
echo "RCPT TO:$TO"
echo "DATA"
sleep 1

echo "From:$FROM"
echo "To:$TO"
echo "Date:$DATE"
echo "Subject:$DATE "
echo "mail message"

echo "."

sleep 1

echo "QUIT"

2013年1月30日 星期三

Shell Script 中捉取 MySQL 資料庫中的指定記錄值

使用 -N 及 -s 參數


範例
mysql -u network -pnetwork network -e "select * from ip" -N -s