2008年7月22日 星期二

set IP object

NetScreen-25
以Telnet 方式加 IP object
set address "區域" "Name" IP Mask "Comment"
Ex.
set address "Untrust" "A0006-05" 111.222.1.2 255.255.255.255 "xxx Source IP"

2008年7月16日 星期三

MySQL reset root password

service mysqld stop
mysqld_safe --skip-grant-tables &
mysql -u root mysql

UPDATE user SET password=PASSWORD("abcd") WHERE user="root";
FLUSH PRIVILEGES;
exit
service mysqld restart

2008年7月13日 星期日

SSH 免密碼的做法

假設前提:
Server 部分為 linux.dmtsai.tw 這部 192.168.0.2 的主機,欲使用的 User 為 user1 這個帳號;
Client 部分為 test2.dmtsai.tw 這部 192.168.0.100 PC 的 user2 這個帳號, 他要用來登入 192.168.0.2 這部主機的 user1 這個帳號。

$user2@test2 ~]$ ssh-keygen -t rsa <==這個步驟在產生 Keys

Generating public/private rsa key pair. Enter file in which to save the key (/home/user2/.ssh/id_rsa): <==這裡按下Enter

Enter passphrase (empty for no passphrase): <==這裡按 Enter

Enter same passphrase again: <==再按一次 Enter

Your identification has been saved in /home/user2/.ssh/id_rsa. <==這是私鑰

Your public key has been saved in /home/user2/.ssh/id_rsa.pub. <==這是公鑰

# 注意: -t 指的是『使用何種密碼演算方式?』由於我們使用 RSA ,
# 所以直接輸入 -t rsa 即可建立兩支 Keys !
# 此外,建立的兩把 Keys 都放置在家目錄下的 .ssh 這個目錄中!
ls -al ~/.ssh
total 12
-rw------- 1 user2 user2 887 Nov 12 22:36 id_rsa
-rw-r--r-- 1 user2 user2 233 Nov 12 22:36 id_rsa.pub
-rw-r--r-- 1 user2 user2 222 Oct 31 11:20 known_hosts
PS. 家目錄的權限必需為755

請注意, 私鑰必需要放置在家目錄底下的 .ssh 裡面,~/.ssh/id_rsa
~/.ssh 目錄權限為700,私鑰的檔案權限為600

在 Server 端放置可以登入的公鑰:
既然我們要讓 test2 主機可以用 user2 這個帳號登入 linux.dmtsai.tw 這部主機的user1,那麼這部主機自然需要保有 user2 的 public key 囉!所以我們必需要將 Client 端建立的 id_rsa.pub 檔案給他拷貝到 linux.dmtsai.tw 裡頭的 user1 這個使用者的家目錄之下

較早期的作法
被登入的主機的某個帳號,他的公鑰放置的檔案名稱預設就是 authorized_keys
$user2@test2 ~]$ scp ~/.ssh/id_rsa.pub linux.dmtsai.tw:/home/user1/.

改登入linux.dmtsai.tw的user1 帳號
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

新的做法
直接在Client 主機中執行以下指令
ssh USERNAME@HOSTNAME 'mkdir -p ~/.ssh; cat >> ~/.ssh/authorized_keys'  < ~/.ssh/id_rsa.pub


ssh-copy-id USERNAME@HOSTNAME
直接將Client 主機的Root 的金鑰送到指定的主機

若要指定使用的金耀
ssh-copy-id -i ~/.ssh/id_rsa.pub USERNAME@HOSTNAME
(參考文章 https://blog.gtwang.org/linux/linux-ssh-public-key-authentication/)

較早期的作法
authorized_keys 權限為600
請注意上面的機器!由於 authorized_keys 可以保存相當多的公鑰內容,因此, 可以使用>> 的方式來將 Client 端的公鑰新增到該檔案內

登入測試
user2@test2 ~]$ ssh user1@linux.dmtsai.tw
基本上應該是不會問你密碼了,如果還是會問,再檢查一下檔案的權限跟與路徑是否正確

請注意, user1 不能以 user2 登入 test2.linux.org

Install sshd for cygwin

  • For Windows XP , open a cygwin window by double clicking the icon; a black screen pops open,
  • For Windows Vista , right click the icon and choose "run as administrator"; a black screen pops open, type

  • ssh-host-config -y (on slower computers, it may take several minutes to generate the dsa security keys)
    If the script asks you about "privilege separation", answer yes
    If the script asks about "create a local user sshd on this machine", answer yes
    If the script asks you about "install sshd as a service", answer yes

  • Windows Vista
    If Vista asks "create a new local account ssh_server which has the required privileges" answer yes

  • When the script stops and asks you for "environment variable CYGWIN=" your answer is ntsec or tty
    (click here for an explanation of ntsec)

  • Start sshd
    net start sshd
    or
    cygrunsrv --start sshd

  • Stop sshd
    net stop ssh
    or
    cygrunsrv --stop sshd

  • If the service fails to start, try
    chown system /etc/ssh*
    chown system /var/empty
    net start sshd

  • Important Pop a cygwin window, harmonize Windows user information with cygwin, otherwise they cannot login
    After you created (or removed) Windows users
    mkpasswd -cl > /etc/passwd
    mkgroup --local > /etc/group

    mkpasswd creates a password file from Windows' user list
    mkgroup creates a group file from Windows' user list

  • Test to see if sshd is working, pop a cygwin window (note: the command below is case sensitive)
    whoami
    ssh localhost

    or
    ssh -vvv localhost
    or
    ssh $USERNAME@127.0.0.1

  • if ssh complains "The authenticity of host xx.xx.xx.xx can't be established .... Are you sure you want to continue connecting (yes/no)?" Answer yes (Thanks to Daniel Griscom of Suitable Systems)
  • If you get an error message like "ssh-exchange-identification: Connection closed by remote host", it is probably caused by McAfee 8.0i, see this page about the fix. (Thanks to Ron Dozier of University of Delaware, USA)
  • If you get an error message like "entry point _getreent", or "QuerryService Status: Win32 error 1062", it is probably caused by the existance of an older version of "cygwin1.dll" located in the search path. Do a full serarch of "cygwin1.dll" and remove the old version, except the current version at c:\cygwin\bin (Thanks to Joe britton)

  • If you get a prompt without error messages, type
    cd /cygdrive/c
    if you see a directory listing, success!

    If you have troubles ssh into the server, try run ssh-user-config

以上資料轉載自 http://pigtail.net/LRP/printsrv/cygwin-sshd.html

2008年7月11日 星期五

standard input output

Redirector and Pipes and Stream
(1) Stream:
stdin ( standard input ),代表數字0。
stdout ( standard output ),代表數字 1。
stderr ( standard error ),代表數字 2。
stdin 預設為從 keyboard 輸入。stdout、stderr 此兩種輸出類型則預設輸出至 screen。

2008年7月10日 星期四

WebLogic MEM_ARGS 參數設定

WebLogic用了一段時間之後,偶爾總是會出現OutOfMemory,這對測試環境來說,還只要Restart Server 就可以解決,但是在正式環境上出現可就麻煩大了,因為一Restart Server 所有User就都無法使用系統,所以MEM_ARGS這個參數的設定就很重要。
這是我SIT目前的設定,依不同的系統做不同的設定
MEM_ARGS="-Xms768m -Xmx768m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:MaxPermSize=384m -XX:PermSize=384m -XX:SurvivorRatio=6 -XX:+DisableExplicitGC"
提示:以上記得要寫成一行。

Heap Size設定
-Xms 設定一開始的Heap Size。
-Xmx 設定Heap Size的最大值 (最好是不是超過實體記憶體的80%)。
-XX:NewSize 調整JVM的Young Generation的size大小。
-XX:MaxNewSize 調整JVM的Young Generation的size的最大值。
-Xmn Young Generation的size,NewSize 和 MaxNewSize設定為一樣。
-XX:NewRatio 控制Young generation的比例,如-XX:NewRatio=3表示Young generation與Old generation的比例為1:3,即Young generation佔1/4,Old generation佔3/4。
Young generation又被分成三部分,第一部分Eden,用於生成新的Object。另外兩個部分為Survivor空間,當Eden用完後,會將Objects複製到"SS1",當SS1空間滿了的時候,再被複製到"SS2",Objects會在Survivor空間不斷的被複製,直到他滿足條件進入Old generation止。
提示:如果將Heap Size設的越大,GC的週期就會拉長,而且每次GC的時間也會越長。

PermGen space
-XX:PermSize 這一部分是用於存放Class和Meta的訊息,Class在被 Load的時候被放入PermGen space區域,它和和存放Instance的Heap區域不同,GC(Garbage Collection)不會在主程式運行期間對PermGen space進行清理,所以如果你的APP會LOAD很多CLASS的話,就很可能出現PermGen space錯誤。這種錯誤常見在web伺服器對JSP進行pre compile的時候。

整個記憶體配置會像這樣


-XX:+DisableExplicitGC 加了這個參數會停止掉WLS或是程式內直接呼叫GC,減少不必要的GC,將GC交由JVM去執行。

Garbage Collection描述:
Garbage Collection分多種等級,0級就是全部的垃圾回收(Full GC),會回收Old generation中的垃圾;1級或以上為部分垃圾回收,只會回收Young中的垃圾,會發生OutOfMemory通常是產生於Old generation或Perm段垃圾回收后,仍然沒有記憶體空間來存放新的Java 物件的情況。

當一個URL被訪問時,記憶體的配置過程如下:
A. JVM會試圖為Java的相關對象在Eden中初始化一塊記憶體空間
B. 當Eden空間足夠時,記憶體配置結束。否則到下一步
C. JVM會試圖釋放在Eden中所有不活躍的對象(這是屬於1或更高級的垃圾回收);釋放後若Eden空間仍然不足以放入新對象,則會試圖將部分Eden中活躍的對象放入Survivor區/OLD區
D. Survivor區被用來作為Eden及OLD的中間交換區域,當OLD區空間足夠,Survivor區的對象會被移到Old區,否則被保留在Survivor區
E. 當OLD區空間不足時,JVM會在OLD區進行完全的垃圾收集(0級)
F. 完全垃圾收集后,若Survivor及OLD區仍然無法存放從Eden複製過來的部分對象,就會導致JVM無法在Eden區為新的對象配置出記憶體區塊,產生"out of memory的錯誤"

以我的設定為例:
MEM_ARGS="-Xms768m -Xmx768m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:MaxPermSize=384m -XX:PermSize=384m -XX:SurvivorRatio=6 -XX:+DisableExplicitGC"

在上面的例子中:
YOUNG+OLD: 768M
YOUNG: 256M
Perm: 384M
Eden: YOUNG*6/(6+1+1)=192M
Survivor: YOUNG*1/(6+1+1)=32M

Heap Size: YOUNG+OLD+Perm=1024M




  以上是WebLogic記憶體參數的一些基本的設定,太難的我也不會,只是整理一些心得而己,提供做一下參考。
以上資料轉載自 http://prince1005.spaces.live.com/blog/cns!45B42DFAD425C0D4!762.entry

2008年7月4日 星期五

Howto Remote Root Access to MySql

現在新版的,有一點點不一樣

先從本機登入資料庫
mysql -u root -p
use mysql;

#root
GRANT * ON *.* TO root@'%' identified by '123';
說明如下
GRANT *,這裡的*指的是權限 ,例如 SELECT,INSERT,UPDATE,DELETE 。你也可以只單單賦予 SELECT 權限,例如 GRANT SELECT
ON *.*,這裡的第一個*,是Schema,第二個*是TABLE,例如一個Schema叫project,裏頭有個TABLE叫 USER,所以這裡就可以寫成 ON project.user
root@'%',root就是你要給予的帳號,%是指定的IP區段,例如192.168.0.1,192.168.0.%, 192.168.%.%, 192.%,%,%, 127.0.0.1, localhostu 依此類推
'123',則是密碼

更新權限表,這個指令沒有執行,前面就白做了。
FLUSH PRIVILEGES;


-------------------- 我是分隔線 ----------------------------
舊的版本方式

1.set root password.

mysql -u root

設定 root
mysql> SET PASSWORD FOR 'root'@'LOCALHOST' = PASSWORD('123');
mysql> SET PASSWORD FOR 'root'@'192.168.0.1' = PASSWORD('234');
mysql> SET PASSWORD FOR 'root'@'192.1680.100' = PASSWORD('345');

以上,從不同地方的IP登入,密碼就會是不同,請注意!!


設定 root 可以從任何地方來登入

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123123' WITH GRANT OPTION;

*.* 表示 schema.object 如 company.webuser

'%' 表示任何地方



mysql> exit

We’re almost done now. We just have to tell Mysql to allow remote logins.

vi /etc/my.cnf

DB 資料存放處所
datadir=/var/lib/mysql