2011年11月24日 星期四

C++ 執行視窗 按任意件才會結束視窗

C++執行視窗  按任意件才會結束視窗
#include<conio.h>

int main()
{
    getch();
    return 0;
}

2011年10月14日 星期五

CVS


CVS Server 


1.先查看是否安裝cvs

#rpm -qa | grep cvs
一般安裝在 /usr/bin/cvs,
如果未安裝,到www.cvshome.org下載一個最新的rpm安裝即可

2.建立cvs user group,便於管理cvs User
#groupadd cvs

3.建立cvsroot User,屬於cvs組(組名必須為cvs),根目錄為/home/cvsroot,
不允許 login
#useradd -g cvs -s /sbin/nologin cvsroot

4.改變/home/cvsroot的目錄屬性
#chmod 775 /home/cvsroot

5.初始化cvs source,此操作產生目錄 /home/cvsroot/CVSROOT,
其下為一些初始化檔
#cvs -d /home/cvsroot init

6.Create可以login CVS服務的用戶及密碼,需要創建檔passwd
#vi /home/cvsroot/CVSROOT/passwd
檔內容如下:
dawei:xxxxx:cvsroot

dawei為username
注意:cvs user 和 server user是可以不一樣的


7.xxxxxx為密碼,由以下檔產生:
#vi /home/cvsroot/passwdgen.pl 
passwdgen.pl檔案內容:

#!/usr/bin/perl
srand (time());
my $randletter = "(int (rand (26)) + (int (rand (1) + .5) % 2 ? 65 : 97))";
my $salt = sprintf ("%c%c", eval $randletter, eval $randletter);
my $plaintext = shift;
my $crypttext = crypt ($plaintext, $salt);
print "${crypttext} ";

8.如果密碼設為:123456,則敲入:
#./passwdgen.pl "123456"
電腦會產生一組加密密碼例如是ABCDEF 把她複製下來
#vi /home/cvsroot/CVSROOT/passwd
把XXXXXX修改成ABCDEF


9.加入cvs service
#vi /etc/services
cvspserver 2401/tcp #pserver cvs service
cvspserver 2401/udp #pserver cvs service


10.修改設定黨
#vi  /etc/xinetd.d/cvs
主要修改的有


        disable                 = no
        server_args             = -f --allow-root=/home/cvsroot pserver
#       bind                    = 127.0.0.1


修改完成後變成


service cvspserver
{
        disable                 = no
        port                    = 2401
        socket_type             = stream
        protocol                = tcp
        wait                    = no
        user                    = root
        passenv                 = PATH
        server                  = /usr/bin/cvs
        env                     = HOME=/var/cvs
        server_args             = -f --allow-root=/home/cvsroot pserver
#       bind                    = 127.0.0.1
}

11.重新啟動
#/etc/rc.d/init.d/xinetd restart


若出現沒有 xinetd,yum即可
#yum install xinetd


12.檢查cvspserver服務是否已經啟動
#netstat -l |grep cvspserver 
其結果如下:
tcp 0 0 *:cvspserver *:* LISTEN


CVS client

1.首先登入CVS


有兩種方式
第一種 只接打
#cvs -d ":pserver:username@X.X.X.X:/home/export" login
第二種 寫在~/.bash_profile內
#vi ~/.bash_profile
內容如下
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
export CVSROOT=:pserver:dawei@10.74.11.36:/home/cvsroot 

是增加export CVSROOT=:pserver:username@X.X.X.X:/home/cvsroot 
X.X.X.X 是server ip 
修改完成之後
#cvs login
會跑出

Logging in to :pserver:lin@10.74.11.36:2401/home/cvsroot
CVS password:


打完密碼就可以了
若遇到 No route to host
可能是防火牆沒關


在你的目錄底下
#ls -all
應該會出現.cvspass黨
#cat .cvspass
/1 :pserver:lin@10.74.11.36:2401/home/cvsroot A4Kw1"R
這是記錄著你登入的資訊,這資料會一直存在,除非你把它刪掉或其他。


2.clinet 在server建立資料夾
#cvs import -m "CVS demo test" da r0 start
此時在server就會多出da這個資料夾


再把此資料夾在check out
#cvs co da  or #cvs checkout da
#ls
就會發現多個da




#cvs status da or  #cvs st da
會顯示所有檔案的狀態

Up-to-date       : 最新版
Locally Modified : 已修改
Needs Patch      : 需更新
Needs Merge      : 需合併





在進入到da
#cd da
#ls
你就會看到一個CVS的資料夾
#cd CVS
#ls
就會看到Entries  Repository  Root


先來看Repository
#cat Repository
就是你倉庫的名稱
#cat ROOT
就是你登入的資訊
#cat Entries
目前版本 寫入時間(格林威治)


#pwd

/home/dawei/da
#vi test  /建立一個文字檔
hello word  /裡面內容

#cvs add test  /加入到server 會幫你查詢看看是否有重複的檔名

cvs add: scheduling file `test' for addition
cvs add: use 'cvs commit' to add this file permanently
#cvs ci test
or #cvs ci -m "增加一列註解" test


ci 是存入之意,-m 後面接續本次存入的記錄訊息,主要目的,是用來讓自己及合作伙伴,將來能對這次的修改動作有跡可循。若您沒有加 -m "記錄訊息" 也無妨,cvs 會主動叫出 vi,要求您必須輸入記錄訊息,如以下操作畫面:

"增加一列註解"
CVS: ----------------------------------------------------------------------
CVS: Enter Log.  Lines beginning with `CVS:' are removed automatically
CVS:
CVS: Committing in .
CVS:
CVS: Modified Files:
CVS:    test
CVS: ----------------------------------------------------------------------


按 wq 存檔離開, 出現以下畫面:



RCS file: /home/cvsroot/da/test,v
done
Checking in test;
/home/cvsroot/da/test,v  <--  test
initial revision: 1.1
done


#cvs st test /用st來看一下test目前狀態
===================================================================
File: test              Status: Up-to-date
   Working revision:    1.1
   Repository revision: 1.1     /home/cvsroot/da/test,v
   Sticky Tag:          (none)
   Sticky Date:         (none)
   Sticky Options:      (none)
參考文獻


CVS Server for Linux 安裝步驟

CVS 入門


2011年8月31日 星期三

令人警訝的0.1


在一場國立大學EMBA、高階企業經理人的演講中,我提到簡單的數字遊戲:1x1x1x1

1乘1,乘以十次,答案會變多少呢?

答案很簡單,當然是「1」啦。

可是──1.1 x 1.1 x 1.1 x 1.1

也就是1.1乘1.1,乘以十次之後,答案會變多少呢?

我想,答案就不容易算了!
我問學員,有人猜十,有人猜八……正確答案多少呢?

你要不要用計算機算一下?答案是「2.85…」。

假如每天進步一點點,日積月累,積極、不斷地進步、再進步,那麼「乘以10次」之後,答案就變「2.85…」可是,如果每天懶散一點、懈怠一點、沒有目 標、無所事事……

0.9 x 0.9 x 0.9 x 0.9
亦即,「0..9」乘以十次以後,答案會變多少呢?
我問學員,有人答:「0.8」,有人答「0.7」……正確答案是多少呢?
請你親自用計算機算一下好嗎?

相信你的印象會更深刻!答案是「0.31」

啊?「0.9」自乘十次以後,會變「0.31」而已呀?這,就是「積極」與「懈怠」截然不同的命運!

有人在自我生命中,加入了「正向」、「積極」、「堅持」、「永不放棄」的因子,每天努力朝向自己的目標前進,那麼,他們的成績就愈來愈亮麗,業績愈來愈加 倍!

可是,有些人個偷懶、萎靡、沒有目標、不願積極行,那麼他們的命運,可能就是極普通,甚至是「倒退魯」的景象。

「不跪地,怎能聞花香?」一名攝影師說:「要拍出花的氣味,就要蹲下、跪下,以謙卑的態度貼近花朵!」

人,也是一樣,想要有精彩的人生,就必須以實際行,積極的用生命來交換!

所以,「少年時要狂,目標遠大、胸懷天下;青年時要闖,要勇於行、創新,成為生命的勇敢戰士!」因為,「上半輩子不猶豫,下半輩子才能不後悔!」



轉貼之網路文章

2011年8月24日 星期三

FreeBSD SSH

編輯/etc/rc.conf
#vi /etc/rc.conf
加入下面一行
sshd_enable="YES"
這樣重新開機就會有sshd的服務了。

編輯/etc/ssh/sshd_config
#vi /etc/ssh/sshd_config



允許遠端 Root 登入 PermitRootLogin yes


再重新啟動 /etc/rc.d/sshd restart 就OK了





FreeBSD關機指令:

1. reboot:重新開機
2. halt:關機:支援電源管理的電腦,可以自動關閉電源。

Linux IPv6 設定

在Linux中一般ip的設定是在/etc/sysconfig/network-scripts/ifcfg-eth0 中
設定IPv4的基本網路環境
#nano /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=192.xx.oo.1
GATEWAY=192.xx.oo.254
NETMASK=255.255.255.0
BOOTPROTO=none (預設是dhcp,手動設定後請修改為none)
存檔離開(ctrl+x後再按y)
#nano /etc/resolv.conf
nameserver 168.95.1.1
#/etc/init.d/network restart

IPv6環境設定
#nano /etc/sysconfig/network-scripts/ifcfg-eth0
IPV6ADDR=2222::20
IPV6_DEFAULTGW=2222::1
IPV6INIT=yes
存檔離開(ctrl+x後再按y)

#/etc/rc.d/init.d/network restart (重新啟動網卡設定)
透過ifconfig可以看到global中有你剛才設定的ip
#ifconfig



如果上面設定完成後,但是ipv6的ip沒有出現時,可能需要修改另一個地方。
#nano /etc/sysconfig/network
中NETWORKING_IPV6=no(要改成yes)
設定完成後再重新啟動網路設定
#/etc/rc.d/init.d/network restart (重新啟動網卡設定)

IPv6預設閘道器查詢
如果所有網路上沒有給ipv6的資料,可以手動設定之ipv6的address,但是v6GW不知道時可以透過traceroute6來查詢,通常第1筆就是所在環境中的v6GW

2011年8月10日 星期三

Linux Rsync 排除指令 exclude

Rsync 是很好用的同步備份資料的指令,簡單方便。


想知道其他資訊可以參考鳥哥喔!!!
http://linux.vbird.org/linux_server/0310telnetssh.php#rsync


這次楊大俠測試的環境是三台web server互相備份資料。




一開始有用過Rsync的朋友可以跳過簡單基本的Rsync教學喔。








首先當然先認識一下Rsync。


rsync -av -e ssh  /home/a/www/  /home/b/www/ 


-av -e ssh
我這邊不多說嚕,鳥哥寫得很清楚了(楊大俠懶惰。


主要楊大俠要講的是後面的路徑喔,因為楊大俠第一次看的時候,看得霧煞煞,應該還是有人跟楊大俠一樣吧!!!!!!。


/home/a/  /home/b/


以上就是a 傳送到 b,也可以說成 a 複製到 b。


舉個例子,現在/home/a/底下有aaa這個檔案,/home/b/底下是空的,然後執行上面那條指令,在/home/b/底下就會看到aaa喔。


很簡單吧!!!!


下面是實際的操作喔!!!!






以上是自己對自己喔!!!


如果需要自己對別人呢?


延續上面例子,一樣是/home/a/ 傳送到/home/b,差別就在與是自己的/home/a/  傳送到別人的/home/b。


指令只要加上對方的ip就可以嚕。


rsync -av -e ssh  /home/a/www/  user@x.x.x.x:/home/b/www/ 


實際上就是


rsync -av -e ssh  /home/a/www/  root@192.168.1.1:/home/b/www/ 


執行此指令會需要密碼喔。


以上基本的運用會了,就可以再進階一點嚕,上面內容鳥哥都有喔。




如果可以SSH不用密碼登入,再加上crontab 設定每天執行一次,這樣就可以每天自動備份資料。
對怕資料遺失,以及管理server方便多了。


就開始來看楊大俠的介紹吧!!!!




首先先要讓SSH不用密碼登入。



cd.ssh(若沒有[root@xxx#]mkdir .ssh)

[root@xxx]#cd /root/.ssh
[root@.ssh]#ssh-keygen -d
]root@.ssh]#scp id_dsa.pub X.X.X.X:/root/.ssh/authorized_keys2
[root@.ssh]#ssh root@X.X.X.X

X.X.X.X 是IP address
若成功就不用密碼,就可以進入到另一台主機。


紅色圈圈是enter

藍色圈圈是 root密碼
三角形原本是主機2變成主機1嚕!!!!





再來就是設定crontab


[root@xxx]# crontab –e
####進入到編輯畫面增加下面那行,每天00分執行sync,若要010分,則為10 0 * * * /root/sync


0 0 * * * /root/sync


然後:wq 存檔跳出編輯畫面。








再來就是編寫sync黨,並且變成可執行黨。
[root@xxx~]#cd /root
[root@xxx~]#nano sync2


把之前rsync的指令寫在上面。





[root@xxx~]#chmod 700 sync2
執行sync2,就可以去檢查看看rsync指令是否有成功喔。
[root@xxx~]#./sync2








以上應該不會太難,其實網路上還有其他資訊,東看看西看看,都可以成功。


不過楊大俠這篇想寫的重點就是在同一個目錄底下,若有不需要同步的目錄或資料,該如何處裡,(例如:在/home/A這的資料夾底下有a b c三個檔案,但是我不想要b這個檔案同步。)這在網路的相關資源應該滿少的,我個人認為拉,因為楊大俠需之前在google收尋到的不是很多,所以才寫這篇方便有緣人查詢看到。


在/home/da/新增一個文件 名稱為file
然後把不需要的檔案寫在file上,以剛說的例子,就把b寫入在這文件(file)內。


[root@xxx]# cd /home/da
[root@xxx]# vim file


進入編輯畫面

b
~
~
~


:wq 離開


不好意思,楊大俠在實作的時候沒有存照片,沒辦法貼上來,不過應該不會難道各位先進。


所以不需要同步的檔案或目錄路徑就是/home/da/file



重點來拉!!!就是指令怎麼寫呢?(指令的環境:在/home/A這的資料夾底下有a b c三個檔案,但是我不想要b這個檔案同步。)

rsync -av -e ssh --exclude-from=/home/da/file  /home/A user@x.x.x.x:/home/A


使用排除指令 --exclude-from
只要增加--exclude-from=不需要同步的資料夾所在路徑。

其他都跟上面一樣,很簡單吧!!!!!


所以只需要在sync這個可執行黨內加上排除指令就可大功告成嚕。




任督二脈:
       楊大俠還不知道排除指令的時候,檔案一多一大,可是一行一行慢慢打的,不僅僅麻煩,效能又慢,剛好有找到排除指令的用法,就只有一行,方便多了,感覺我之前打那得多,都是白工作了,而且又是浪費時間。


      在實作測試的時候,楊大俠認為比較麻煩的部分就是SSH的金鑰部分,如果是兩台電腦互相給金鑰,那倒是沒什麼問題,三台電腦可能會有問題,因為楊大俠上面貼的指令,如果三台照作,因為先後的關係,後面的會把前面那組金鑰給覆蓋下去,所以造成先作SSH沒辦法順利不用密碼連線SSH,最後是用vim編輯金鑰,把別人的自己手動copy進去。









參考網站


備份的方法 3 : 使用 rsync


rsync 參數設定及範例


不用密碼直接用SSH登入到遠端電腦


rsync 檔案備份


Rsync + SSH -- 讓 Server 自動異地備援也加密

使用 rsync 做資料同步,並利用 SSH 做安全加密 ( 適用RHEL4、Fedora Core 3、4 及 5 )

2011年7月28日 星期四

Linux IPv6 server Ch6 DNS

系統環境:
        Window環境: Window XP
           IPv6 addressfe80::f8c8:454b:a071:7865
        Linux 環境CentOS 5.6
           IPv6 Global address2001:e10:6840:21:a00:27ff:febb:89b1



在linux rpm的安裝之下,預設主設定檔是在/etc/named.conf,但是相關記錄路徑在/var/named之中。
但在centos5的版本之中(是/var/named/chroot/之下的) 先確認bind是否安裝了,如果沒有就透過yum來安裝


在linux上最常用的dns服務套件就是bind,目前應該bind9多的版本了,安裝上直接透過 yum 安裝 Bind 與其設定檔範本
#yum install bind system-config-bind bind-chroot




若沒有chroot此資料夾,其實可以自己建立,是OK的。

設定檔位置:/var/named/chroot/
由於安全性考量,安裝完 bind-chroot 套件後,bind 的設定檔位置會改到 /var/named/chroot 下
system-config-bind 套件則是安裝bind預設的設定檔,位置在 /usr/share/system-config-bind/profiles/default 下
設定檔放置步驟:

1. named.conf(dns基本設定檔)
先到 /var/named/chroot/etc 將/usr/share/system-config-bind/profiles/default/named.conf 複製過來
# cd /var/named/chroot/etc
# cp /usr/share/system-config-bind/profiles/default/named.conf ./



3. named.root(dns基本上層主機記錄檔)
到 /usr/share/doc/bind-9.3.6/sample/var/named 複製 named.root 到 /var/named/chroot/var/named/
# cd /var/named/chroot/var/named/
# cp /usr/share/doc/bind-9.3.6/sample/var/named/named.root ./




#/etc/init.d/named start (啟動dns服務)
利用netstat 檢查 Bind 是否同時監聽 IPv4 與 IPv6 的 53 port
#netstat -antlp | grep ':53'
可以看到已經啟動IPv4 和 IPv6的服務了,但是似乎只有看到v4的服務,沒有看到v6的服務port在listen




請先停止bind的服務
#/etc/init.d/named stop (停止dns服務)
沒有看到上面的v6 port時,請修改/var/named/chroot/etc/named.conf在 options 區段內有些 Bind 版本需加入以下內容:

listen-on-v6 { any; };

但是標準備的設定方法,應該是讓v4和v6都指定要listen的interface,而在named.conf中指定介面的方式就是用ip位置,所以v4和v6的設定如下:
listen-on port 53 { 140.xx.oo.1; };
listen-on-v6 { 2001::1; };



#nano /var/named/chroot/etc/named.conf


再重新啟動bind
#/etc/init.d/named restart



DNS網域主機端設定(下面的網域名稱是測試用,實際運作需要向所在網路單位申請dns網域名稱)
#nano /var/named/chroot/etc/named.conf
其中反解的zone的內容是先設定prefix的ipv6位置解析,而每個是用16進位,所以一般ipv6給的網段是prefix為64時,會是16組16進元之字元組成!!
zone "test.twnic.net." IN {
type master;
file "test.twnic.net.hosts";
allow-update { none; };
};

zone "2.0.0.0.4.0.0.0.8.8.2.0.1.0.0.2.ip6.arpa." IN {
type master;
file "test.twnic.net.rev";
allow-update { none; };
};

再來設定正解檔,正解檔名依照上面紅色字取名
#nano /var/named/chroot/var/named/test.twnic.net.hosts
$TTL 86400
test.twnic.net. IN SOA test.twnic.net. root.test.twnic.net. (
2011070706 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum

test.twnic.net. IN NS test.twnic.net.
hello IN A 211.72.210.41
wkb IN A 211.72.210.41
test1 IN AAAA 2001:288:4:2::3649
[參考範例檔]

再來設定反解檔,反解檔名依照上面紫色字取名
#nano /var/named/chroot/var/named/test.twnic.net.rev
$TTL 86400
2.0.0.0.4.0.0.0.8.8.2.0.1.0.0.2.ip6.arpa. IN SOA test.twnic.net. root.test.twnic.net. (
2011070703 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum

2.0.0.0.4.0.0.0.8.8.2.0.1.0.0.2.ip6.arpa. IN NS test.twnic.net.
9.4.6.3.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR wkb.test.twnic.net.
[參考範例檔]

上面都設定完成後需要重新啟動dns的named服務
#/etc/init.d/named restart (如果沒有出現任何錯誤訊息就ok了!!)

PS:正反解檔如果有修改,在每次更新內容後,務必要更新 serial;通常小弟習慣用西元年、月、日加上2碼的序號如:2011080201

補充:
設定完成後可以透過nslookup來測試,由於目前只是暫時設定之dns資料,並非與上層dns有註冊,所以需要透過本來查作nslookup查詢測試或如果需要的話將dns server設定本機自已要ip為dns server(修改/etc/resolv.conf)
#nslookup
server 127.0.0.1




修改dns server設定檔
#nano /etc/resolv.conf
nameserver 127.0.0.1 加上本機為dns預設server


補充:反解查詢dns ip設法之快速方式
#nslookup
2001:288:4:2::3649 (這樣就可以快速查出dns需要之ip格式)









2011年7月20日 星期三

Linux CentOS 常用指令

history
查看下過的指令
預設1000筆


wget:在linux中透過網頁直接下載東西或是網頁的html檔
#wget http://www.cyut.edu.tw

cp test.ori test.copy
可以複製檔案,是指將test.ori複製成一個新的檔案為test.copy

mv test.ori test.copy
將檔案搬移原來的test.ori就會不見,只會有test.copy,如果前後的檔名不同的話,就是如同改檔案名稱的意思


修改語系設定檔 /etc/sysconfig/i18n
    原本為:
    LANG="zh_TW.UTF-8"
    SYSFONT="latarcyrheb-sun16"
    SUPPORTED="zh_TW.UTF-8:zh_TW:zh"

    修改為:
    LANG="zh_TW.Big5"
    SYSFONT="latarcyrheb-sun16"
    SUPPORTED="zh_TW.Big5:zh_TW:zh"
    修改完後必須重新開機,設定才能生效!! 







#nano /etc/inittab (將原來的5改3即可變成以文字模式進入開機登錄畫面)
要存檔請用「Ctrl+x」後再按「y」即可存檔後離開




重新開機指令為shutdown -r now
直接電腦關機為shutdown -h now





2011年6月29日 星期三

Linux IPv6 server Ch5 firewall

系統環境:
Window環境: Window XP
           IPv6 addressfe80::f8c8:454b:a071:7865
        Linux 環境CentOS 5.6
           IPv6 Global address2001:e10:6840:21:a00:27ff:febb:89b1



主要是針對IPv6的80 port 做封鎖,來檔掉要連線到IPv6 Web 網頁的user。
ip6tables - (L是查看 F為清除所有規則、X為清除其他使用者的規則、Z為把統計數值歸零)。
所以一開始先查看一下防火牆內的規則。






















因為有重新開機過,所以還是要啟動web server。






















再來就清除所有規則,IPv4也同樣的清除。























再來就查詢一下是否有清除掉。























在Window用IE連上WWW,是可以正常連通的。























再來就打上ip6tables -A INPUT -i eth0 -p tcp –dport 80 -j DROP,來封鎖。


在Window用IE連上WWW,就可以看到這樣就無法連線了。