1、PE及CE有兩條LINK
2、跑RIP
3、有分DATA及VOICE網段 (192.168.2.0 data,192.168.3.0 voice)
4、平常DATA跑第一條,VOICE跑第二條
5、斷第一條時,DATA需能跑到第二條
6、斷第二條線,VOICE不需跑到第一條
router rip
version 2
redistribute static
offset-list 1 out 3 FastEthernet0/1
network 172.31.0.0
network 192.168.2.0
network 192.168.3.0
distribute-list 1 out FastEthernet0/0
distribute-list 12 out FastEthernet0/1
!
ip classless
ip route 192.168.2.0 255.255.255.0 192.168.1.254
ip route 192.168.3.0 255.255.255.0 192.168.1.254
!
no ip http server
no ip http secure-server
!
!
access-list 1 permit 192.168.2.0 0.0.0.255
access-list 12 permit 192.168.2.0
access-list 12 permit 192.168.3.0
測試:斷第一條
172.31.0.0/30 is subnetted, 2 subnets
C 172.31.0.0 is directly connected, FastEthernet0/0
C 172.31.0.4 is directly connected, FastEthernet0/1
R 192.168.2.0/24 [120/4] via 172.31.0.6, 00:00:17, FastEthernet0/1
R 192.168.3.0/24 [120/1] via 172.31.0.6, 00:00:17, FastEthernet0/1
測試:斷第二條
172.31.0.0/30 is subnetted, 2 subnets
C 172.31.0.0 is directly connected, FastEthernet0/0
C 172.31.0.4 is directly connected, FastEthernet0/1
R 192.168.2.0/24 [120/1] via 172.31.0.2, 00:00:10, FastEthernet0/0
測試:把兩條線都拉起來
172.31.0.0/30 is subnetted, 2 subnets
C 172.31.0.0 is directly connected, FastEthernet0/0
C 172.31.0.4 is directly connected, FastEthernet0/1
R 192.168.2.0/24 [120/1] via 172.31.0.2, 00:00:02, FastEthernet0/0
R 192.168.3.0/24 [120/1] via 172.31.0.6, 00:00:02, FastEthernet0/1
均符合需求
2014年9月24日 星期三
2014年8月26日 星期二
Tenda N30 真的不能當作旅行AP使用 - 一場悲劇的發生
家裡的電視需要網路線。但再過一段時間後他就再也沒有網路線可以接了。因此有兩個解法:1、電力線網路,2、將Wi-Fi轉成有線網路。
想試試看不用錢的解法。但之前的FON賣的賣送的送,除了跟親朋好友調貨之外,還有沒有解法?
看了一下櫃子,有一台Tenda N30躺在架上。這台機器是申辦寬頻的贈品,但後來拿到TTC的測速用AP後(有gigalan),它就一直被冷凍起來(大概就跟張泰山被凍在bench上一樣久的時間)
作了一下功課,這一台機器的ROM和RAM太小,沒有辦法刷成dd-wrt或openwrt。
看來只能從原廠的firmware來解,幾天前剛好看到有新的firmware,就來試試。
升版了之後,原先的簡中介面變成英文介面,看起來順眼許多。但也陌生許多。
找了一下,Bingo,有選擇WAN介面的功能,就來試試。
殊不知,這是一場災難的發生。
試著將WAN 改成Wi-Fi,順利的抓到家裡的AP,但是後端的電腦一直不能連上線。(此時後端的電腦用來設定N30,和N30是在同一個IP網段的,但沒有設定gateway)
訁了幾次都不行,只好死馬當活馬醫。把WAN介面的PPPoE開起來,再把電腦的gateway指向N30。就可以連線了(我家的VTUR有開硬撥,也有發IP)。但這樣一來,其實將來電視和NAS是無法連線的 (因為電視會透過N30作NAT出Internet,和本來的區網就完全無關了)
只好再換一個方法試試,把N30的WAN設定為DHCP。然後...就悲劇了。
跳出了一個IP網段相衝的訊息,之後N30就失聯了,再也進不去。
原因很簡單,就是N30的WAN和LAN都是192.168.1.X。但不曉得是怎麼設計的,在這種狀況下竟然LAN IP就無法連線了。
我正在思考,是要發給他的WAN不同的DHCP網段,再進去改回原先設定,還是乾脆factory reset算了。反正也沒有什麼特殊的設定。
總之,要透過N30把Wi-Fi轉換回ethernet,是不行的。
還是等FON來再刷機試試吧....
想試試看不用錢的解法。但之前的FON賣的賣送的送,除了跟親朋好友調貨之外,還有沒有解法?
看了一下櫃子,有一台Tenda N30躺在架上。這台機器是申辦寬頻的贈品,但後來拿到TTC的測速用AP後(有gigalan),它就一直被冷凍起來(大概就跟張泰山被凍在bench上一樣久的時間)
作了一下功課,這一台機器的ROM和RAM太小,沒有辦法刷成dd-wrt或openwrt。
看來只能從原廠的firmware來解,幾天前剛好看到有新的firmware,就來試試。
升版了之後,原先的簡中介面變成英文介面,看起來順眼許多。但也陌生許多。
找了一下,Bingo,有選擇WAN介面的功能,就來試試。
殊不知,這是一場災難的發生。
試著將WAN 改成Wi-Fi,順利的抓到家裡的AP,但是後端的電腦一直不能連上線。(此時後端的電腦用來設定N30,和N30是在同一個IP網段的,但沒有設定gateway)
訁了幾次都不行,只好死馬當活馬醫。把WAN介面的PPPoE開起來,再把電腦的gateway指向N30。就可以連線了(我家的VTUR有開硬撥,也有發IP)。但這樣一來,其實將來電視和NAS是無法連線的 (因為電視會透過N30作NAT出Internet,和本來的區網就完全無關了)
只好再換一個方法試試,把N30的WAN設定為DHCP。然後...就悲劇了。
跳出了一個IP網段相衝的訊息,之後N30就失聯了,再也進不去。
原因很簡單,就是N30的WAN和LAN都是192.168.1.X。但不曉得是怎麼設計的,在這種狀況下竟然LAN IP就無法連線了。
我正在思考,是要發給他的WAN不同的DHCP網段,再進去改回原先設定,還是乾脆factory reset算了。反正也沒有什麼特殊的設定。
總之,要透過N30把Wi-Fi轉換回ethernet,是不行的。
還是等FON來再刷機試試吧....
2014年5月28日 星期三
Dongle card (3.5G USB)網卡 如何在 Raspberry Pi安裝
1、先更先及安裝相關套件
2、假設核心有支援的話。就直接lsusb,找出其device id。
# lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 005: ID 12d1:1506 Huawei Technologies Co., Ltd. E398 LTE/UMTS/GSM Modem/Networkcard
在可以看出device id為 12d1:1506
3、modprobe usbserial vendor=0x12d1 product=0x1506
#ls -ls /dev/ttyU*
0 crw-rw---T 1 root dialout 188, 0 5月 29 10:50 /dev/ttyUSB0
0 crw-rw---T 1 root dialout 188, 1 5月 29 10:17 /dev/ttyUSB1
0 crw-rw---T 1 root dialout 188, 2 5月 29 10:49 /dev/ttyUSB2
可以看出usb modem有三台 (看廠牌和型號,我有遇過五台的)
4、取出訊號品質。訊號的部份在/dev/ttyUSB0
#more /etc/wvdial.conf (預設的設定檔)
[Dialer Defaults]
Init1 = AT+CSQ
Modem Type = USB Modem
ISDN = 0
New PPPD = yes
Modem = /dev/ttyUSB0
Baud = 9600
Username = " "
Password = " "
Phone = " "
#wvdial
-> WvDial: Internet dialer version 1.61
--> Initializing modem.
--> Sending: AT+CSQ
AT+CSQ
+CSQ: 16,99
OK
--> Modem initialized.
--> Sending: ATDT
--> Waiting for carrier.
ATDT
ERROR
--> Invalid dial command.
--> Disconnecting at Thu May 29 10:53:01 2014
5、撥號上網的部份。data com的部份使用/dev/ttyUSB2
# more /etc/reconnect.conf
[Dialer Defaults]
Phone = *99#
APN = internet
Username = " "
Password = " "
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1, "IP","Internet"
;Modem Type = Analog Modem
Modem Type = USB Modem
Baud = 460800
New PPPD = yes
Modem = /dev/ttyUSB2
ISDN = 0
Stupid Mode = 1
#/usr/bin/wvdial -C /etc/reconnect.conf & (由於非預設設定檔,因此要指定設定檔所在)
6、附錄
部份卡可能要更新kernel才有支援或者要更新firmware: rpi-update
另外有部份網卡要自行compile再insmode或modprobe。就不一一列舉
7、我本來是用ppp直接撥號,但後來發現wvdial有自動重連功能。二話不說就換成wvdial。
附上ppp相關安裝及設定方式,這邊好像是下載別人寫好的script。一時找不到出處,不過因為後來沒有用到,就先找了。
#apt-get install ppp
#cd /etc/ppp/peers
#more gsm (我們看一下gsm的內容)
-detach
lcp-echo-failure 0
/dev/ttyUSB2
115200
debug
defaultroute
usepeerdns
noauth
user ""
ipcp-max-failure 4
ipcp-accept-local
ipcp-accept-remote
ser/pw combo
noauth
crtscts
lock
connect '/usr/sbin/chat -v -t6 -f /etc/ppp/peers/gsm_chat'
#pppd call gsm &(此時就撥號上去了)
# more gsm_chat (我們看一下gsm_chat的內容)
SAY 'Starting Sierra Wireless GSM connect script...\n'
SAY '\n'
SAY 'Setting the abort string\n'
SAY '\n'
# Abort String ------------------------------
ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT 'NO CARRIER' ABORT DELAYED
SAY 'Initializing modem\n'
# Modem Initialization
'' AT
OK ATZ
SAY '\n'
SAY 'Setting APN\n'
OK 'AT+CGDCONT=1,"IP","internet"'
SAY '\n'
SAY 'Dialing...\n'
OK ATD*99#
CONNECT ''
sudo apt-get
update
sudo apt-get install ppp usb-modeswitch
wvdial
2、假設核心有支援的話。就直接lsusb,找出其device id。
# lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 005: ID 12d1:1506 Huawei Technologies Co., Ltd. E398 LTE/UMTS/GSM Modem/Networkcard
在可以看出device id為 12d1:1506
3、modprobe usbserial vendor=0x12d1 product=0x1506
#ls -ls /dev/ttyU*
0 crw-rw---T 1 root dialout 188, 0 5月 29 10:50 /dev/ttyUSB0
0 crw-rw---T 1 root dialout 188, 1 5月 29 10:17 /dev/ttyUSB1
0 crw-rw---T 1 root dialout 188, 2 5月 29 10:49 /dev/ttyUSB2
可以看出usb modem有三台 (看廠牌和型號,我有遇過五台的)
4、取出訊號品質。訊號的部份在/dev/ttyUSB0
#more /etc/wvdial.conf (預設的設定檔)
[Dialer Defaults]
Init1 = AT+CSQ
Modem Type = USB Modem
ISDN = 0
New PPPD = yes
Modem = /dev/ttyUSB0
Baud = 9600
Username = " "
Password = " "
Phone = " "
#wvdial
-> WvDial: Internet dialer version 1.61
--> Initializing modem.
--> Sending: AT+CSQ
AT+CSQ
+CSQ: 16,99
OK
--> Modem initialized.
--> Sending: ATDT
--> Waiting for carrier.
ATDT
ERROR
--> Invalid dial command.
--> Disconnecting at Thu May 29 10:53:01 2014
5、撥號上網的部份。data com的部份使用/dev/ttyUSB2
# more /etc/reconnect.conf
[Dialer Defaults]
Phone = *99#
APN = internet
Username = " "
Password = " "
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1, "IP","Internet"
;Modem Type = Analog Modem
Modem Type = USB Modem
Baud = 460800
New PPPD = yes
Modem = /dev/ttyUSB2
ISDN = 0
Stupid Mode = 1
#/usr/bin/wvdial -C /etc/reconnect.conf & (由於非預設設定檔,因此要指定設定檔所在)
6、附錄
部份卡可能要更新kernel才有支援或者要更新firmware: rpi-update
另外有部份網卡要自行compile再insmode或modprobe。就不一一列舉
7、我本來是用ppp直接撥號,但後來發現wvdial有自動重連功能。二話不說就換成wvdial。
附上ppp相關安裝及設定方式,這邊好像是下載別人寫好的script。一時找不到出處,不過因為後來沒有用到,就先找了。
#apt-get install ppp
#cd /etc/ppp/peers
#more gsm (我們看一下gsm的內容)
-detach
lcp-echo-failure 0
/dev/ttyUSB2
115200
debug
defaultroute
usepeerdns
noauth
user ""
ipcp-max-failure 4
ipcp-accept-local
ipcp-accept-remote
ser/pw combo
noauth
crtscts
lock
connect '/usr/sbin/chat -v -t6 -f /etc/ppp/peers/gsm_chat'
#pppd call gsm &(此時就撥號上去了)
# more gsm_chat (我們看一下gsm_chat的內容)
SAY 'Starting Sierra Wireless GSM connect script...\n'
SAY '\n'
SAY 'Setting the abort string\n'
SAY '\n'
# Abort String ------------------------------
ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT 'NO CARRIER' ABORT DELAYED
SAY 'Initializing modem\n'
# Modem Initialization
'' AT
OK ATZ
SAY '\n'
SAY 'Setting APN\n'
OK 'AT+CGDCONT=1,"IP","internet"'
SAY '\n'
SAY 'Dialing...\n'
OK ATD*99#
CONNECT ''
2014年5月22日 星期四
只開放sftp不開放ssh
1、新增群組 groupadd sftponly
2、建立使用者,將該用戶綁定該群組
adduser test -d /sftp -G sftponly
3、編輯/etc/ssh/sshd_config,新增下列:
Subsystem sftp internal-sftp
Match group sftponly
ChrootDirectory /sftp
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
4、新建/sftp/config
mkdir /sftp/config
並設定權限
chown test /sftp/config
chgrp sftponly /sftp/config
5、重啟sshd
/etc/init.d/sshd restart
2、建立使用者,將該用戶綁定該群組
adduser test -d /sftp -G sftponly
3、編輯/etc/ssh/sshd_config,新增下列:
Subsystem sftp internal-sftp
Match group sftponly
ChrootDirectory /sftp
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
4、新建/sftp/config
mkdir /sftp/config
並設定權限
chown test /sftp/config
chgrp sftponly /sftp/config
5、重啟sshd
/etc/init.d/sshd restart
2014年5月21日 星期三
expect in apache
試expect in PHP一直失敗,只好回頭試expect in apache。不多說,直接看範例吧。
PHP內容如下,就直接呼叫expect,然後丟變數給他而已。
$command = "/home/www/OM/cgi-bin/test.exp 139.175.240.1 RIPO \"password\" local \"sh ver\"";
echo $command."
";
$out = shell_exec($command);
print_r($out);
?>
test.exp的內容,簡單講一下。在apache裡不能跑shell,所以要用spawn telnet $ne,讓它執行。
由於已經spawn telnet了,所以後面的telnet 就不用跑。
#!/usr/bin/expect -f
set timeout 300
set ne [lindex $argv 0]
set user [lindex $argv 1]
set pass [lindex $argv 2]
set vrf [lindex $argv 3]
set cmd [lindex $argv 4]
log_file -a session_$ne.log
set timeout 10
spawn telnet $ne
expect "login: "
send -- "$user\r"
expect "password:"
send -- "$pass\r"
expect "#"
send -- "ter len 0\r"
expect "#"
send -- "context $vrf\r"
expect "#"
send -- "$cmd\r"
expect "#"
send -- "exit\r"
send -- "exit\r"
PHP內容如下,就直接呼叫expect,然後丟變數給他而已。
$command = "/home/www/OM/cgi-bin/test.exp 139.175.240.1 RIPO \"password\" local \"sh ver\"";
echo $command."
";
$out = shell_exec($command);
print_r($out);
?>
test.exp的內容,簡單講一下。在apache裡不能跑shell,所以要用spawn telnet $ne,讓它執行。
由於已經spawn telnet了,所以後面的telnet 就不用跑。
#!/usr/bin/expect -f
set timeout 300
set ne [lindex $argv 0]
set user [lindex $argv 1]
set pass [lindex $argv 2]
set vrf [lindex $argv 3]
set cmd [lindex $argv 4]
log_file -a session_$ne.log
set timeout 10
spawn telnet $ne
expect "login: "
send -- "$user\r"
expect "password:"
send -- "$pass\r"
expect "#"
send -- "ter len 0\r"
expect "#"
send -- "context $vrf\r"
expect "#"
send -- "$cmd\r"
expect "#"
send -- "exit\r"
send -- "exit\r"
2014年2月6日 星期四
如何在Ubuntu 11.10 上 安裝rsyslog 7.4.9
終於想起為何一定要更新版本了。原因是舊版的無法幫你依來源IP分檔。
更新一下apt source
apt-get update
//apt-get install libestr-dev //版本太舊,要自己手動裝新版的(要0.1.9以上)
wget http://libestr.adiscon.com/files/download/libestr-0.1.9.tar.gz
tar xvzf libestr-0.1.9.tar.gz
cd libestr-0.1.9
./configure
make && make install
apt-get install libjson0-dev
apt-get install python-docutils
liblogging找不到有人包好的,所以自己弄。
我們要的是裡面的libstdlog.h和libstdlog.so
wget http://ftp5.gwdg.de/pub/linux/archlinux/community/os/x86_64/liblogging-1.0.0pre-1-x86_64.pkg.tar.xz
tar xvf liblogging-1.0.0pre-1-x86_64.pkg.tar.xz
cd /usr/src/usr/lib/
mv * /usr/lib
cd ../include/
mv * /usr/include/
apt-get install uuid-dev
apt-get install libgcrypt11-dev
apt-get install libmysqld-dev
wget http://www.rsyslog.com/files/download/rsyslog/rsyslog-7.4.9.tar.gz
tar xvzf rsyslog-7.4.9.tar.gz
cd rsyslog-7.4.9
./configure --prefix=/opt/rsyslog --enable-mysql PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ \
LIBLOGSTD_CFLAGS=/usr/local/include/liblogging LIBLOGSTD_LIBS=/usr/lib/libstdlog.so
make && make install
cd /opt/rsyslog/lib/rsyslog
cp * /lib
cp * /lib64/
cd /usr/sbin/
mv rsyslogd rsyslogd.old
cd /opt/rsyslog/sbin/
mv rsyslogd /usr/sbin/
service rsyslog stop
service rsyslog start
更新一下apt source
apt-get update
//apt-get install libestr-dev //版本太舊,要自己手動裝新版的(要0.1.9以上)
wget http://libestr.adiscon.com/files/download/libestr-0.1.9.tar.gz
tar xvzf libestr-0.1.9.tar.gz
cd libestr-0.1.9
./configure
make && make install
apt-get install libjson0-dev
apt-get install python-docutils
liblogging找不到有人包好的,所以自己弄。
我們要的是裡面的libstdlog.h和libstdlog.so
wget http://ftp5.gwdg.de/pub/linux/archlinux/community/os/x86_64/liblogging-1.0.0pre-1-x86_64.pkg.tar.xz
tar xvf liblogging-1.0.0pre-1-x86_64.pkg.tar.xz
cd /usr/src/usr/lib/
mv * /usr/lib
cd ../include/
mv * /usr/include/
apt-get install uuid-dev
apt-get install libgcrypt11-dev
apt-get install libmysqld-dev
wget http://www.rsyslog.com/files/download/rsyslog/rsyslog-7.4.9.tar.gz
tar xvzf rsyslog-7.4.9.tar.gz
cd rsyslog-7.4.9
./configure --prefix=/opt/rsyslog --enable-mysql PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ \
LIBLOGSTD_CFLAGS=/usr/local/include/liblogging LIBLOGSTD_LIBS=/usr/lib/libstdlog.so
make && make install
cd /opt/rsyslog/lib/rsyslog
cp * /lib
cp * /lib64/
cd /usr/sbin/
mv rsyslogd rsyslogd.old
cd /opt/rsyslog/sbin/
mv rsyslogd /usr/sbin/
service rsyslog stop
service rsyslog start
2014年1月27日 星期一
如何在Fedora 上 安裝rsyslog 7.4.9
舊的rsyslog,對於Cisco ASR的支援很差,因此直接裝上新版。
過程有點麻煩,記錄備查。
先安裝libestr:
wget http://libestr.adiscon.com/files/download/libestr-0.1.9.tar.gz
tar xvzf libestr-0.1.9.tar.gz
cd libestr-0.1.9
./configure
make && make install
再安裝json:
wget https://github.com/json-c/json-c/archive/json-c-0.11-20130402.tar.gz --no-check-certificate
tar xvzf json-c-0.11-20130402
cd json-c-json-c-0.11-20130402
./configure
make && make install
接著安裝docutils:
wget https://pypi.python.org/packages/source/d/docutils/docutils-0.11.tar.gz --no-check-certificate
tar xvzf docutils-0.11.tar.gz
cd docutils-0.11
python setup.py install
ln -s /usr/bin/rst2man.py /usr/bin/rst2man
再來安裝liblogging,我們要的是裡面的libstdlog.h和libstdlog.so
wget http://ftp5.gwdg.de/pub/linux/archlinux/community/os/x86_64/liblogging-1.0.0pre-1-x86_64.pkg.tar.xz
tar xvf liblogging-1.0.0pre-1-x86_64.pkg.tar.xz
cd /usr/src/usr/lib/
mv * /usr/lib
cd ../include/
mv * /usr/include/
再安裝uuid相關套件
yum -y install uuid uuid-devel libuuid libuuid-devel
再補一下libgrcypt套件與發展程式:
yum -y install libgcrypt libgcrypt-devel
最後回到重頭戲:
wget http://www.rsyslog.com/files/download/rsyslog/rsyslog-7.4.9.tar.gz
tar xvzf rsyslog-7.4.9.tar.gz
cd rsyslog-7.4.9
./configure --prefix=/opt/rsyslog --enable-mysql PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ LIBLOGSTD_CFLAGS=/usr/local/include/liblogging LIBLOGSTD_LIBS=/usr/lib/libstdlog.so
make && make install
停掉原有的rsyslog,再執行新的就ok了。
理論上 LD_LIBRARY_PATH要把剛剛的libstdlog.so所在的目錄export出去,不然會找不到。
但這樣做的時候service rsyslog restart會找不到so檔。
因此最後的解法是:
cp /opt/rsyslog/lib/rsyslog/libstdlog.so* /lib64/
正規的解釋如下:
Libraries have been installed in:
/opt/rsyslog/lib/rsyslog
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
參考網頁:http://www.07net01.com/storage_networking/Rsyslog__loganalyzerrizhifuwuqidajian_586293_1379322838.html
過程有點麻煩,記錄備查。
先安裝libestr:
wget http://libestr.adiscon.com/files/download/libestr-0.1.9.tar.gz
tar xvzf libestr-0.1.9.tar.gz
cd libestr-0.1.9
./configure
make && make install
再安裝json:
wget https://github.com/json-c/json-c/archive/json-c-0.11-20130402.tar.gz --no-check-certificate
tar xvzf json-c-0.11-20130402
cd json-c-json-c-0.11-20130402
./configure
make && make install
接著安裝docutils:
wget https://pypi.python.org/packages/source/d/docutils/docutils-0.11.tar.gz --no-check-certificate
tar xvzf docutils-0.11.tar.gz
cd docutils-0.11
python setup.py install
ln -s /usr/bin/rst2man.py /usr/bin/rst2man
再來安裝liblogging,我們要的是裡面的libstdlog.h和libstdlog.so
wget http://ftp5.gwdg.de/pub/linux/archlinux/community/os/x86_64/liblogging-1.0.0pre-1-x86_64.pkg.tar.xz
tar xvf liblogging-1.0.0pre-1-x86_64.pkg.tar.xz
cd /usr/src/usr/lib/
mv * /usr/lib
cd ../include/
mv * /usr/include/
再安裝uuid相關套件
yum -y install uuid uuid-devel libuuid libuuid-devel
再補一下libgrcypt套件與發展程式:
yum -y install libgcrypt libgcrypt-devel
最後回到重頭戲:
wget http://www.rsyslog.com/files/download/rsyslog/rsyslog-7.4.9.tar.gz
tar xvzf rsyslog-7.4.9.tar.gz
cd rsyslog-7.4.9
./configure --prefix=/opt/rsyslog --enable-mysql PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ LIBLOGSTD_CFLAGS=/usr/local/include/liblogging LIBLOGSTD_LIBS=/usr/lib/libstdlog.so
make && make install
停掉原有的rsyslog,再執行新的就ok了。
理論上 LD_LIBRARY_PATH要把剛剛的libstdlog.so所在的目錄export出去,不然會找不到。
但這樣做的時候service rsyslog restart會找不到so檔。
因此最後的解法是:
cp /opt/rsyslog/lib/rsyslog/libstdlog.so* /lib64/
正規的解釋如下:
Libraries have been installed in:
/opt/rsyslog/lib/rsyslog
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
參考網頁:http://www.07net01.com/storage_networking/Rsyslog__loganalyzerrizhifuwuqidajian_586293_1379322838.html
2014年1月13日 星期一
rrdtool 出小圖時資料會變動?
有一個新案子。需求大概是這樣。
1、測試某幾個特殊網頁的access time和ping latency
2、測試ftp網站的上傳及下載速度
3、將之輸出為pdf檔。
所以我的作法是
1、用rrdtool來處理儲存及繪圖的部份
2、用fpdf來出pdf檔。將前述的圖及表包起來。
但作完後有一個問題。同一個時間區段的資料,用大圖和小圖竟然會有不同的輸出結果:
例如:
大圖727x233
可以看出,Maximum是115.64,
小圖267x121,Maximum竟然變成了89,
猜想是因為x軸沒有辦法畫到最右邊的關係。但...取值時是損讀取RRD檔,怎麼會和graph有關?
似乎沒有什麼好解法,使用--full-size-mode 可以暫時排除,並且只保留Y軸的大小。(圖變成了400x80)
但這樣圖會變的很醜...像這樣。我如果出這種圖應該會被打死吧。
所以不得不找其它解,其中一個解法就是先產出大圖,再用imagemagic來把它轉成小圖,但這樣會變的很小很糊...
語法如下: ( 727x205 to )
convert facebook-latency.png -resize 20% facebook-latency.png
或者圖型會變的很胖,即使把Y軸的說明文字拿掉也一樣難看。
嵌入PDF檔後,更是失敗。
試了一個小時,沒有什麼好辦法。只好從其它方面著手。
就是從pdf的產出程式來動手,最後在輸出image檔時,強制指定尺寸為95*40,順利結案。
看來fpdf縮圖的功力不錯。
$pdf->Image("$PATH/facebook-latency.png",10,110,95,40,'PNG');
最後貼一下出的pdf檔。其實因為+8的問題也弄了很久。
之後是直接說這個報表是昨天08:00 到今天08:00的就好。
否則如果真的圖檔也要從00:00到00:00,那我就必需直接讀rrd作運算,而不能使用rrdfetch的功能來直接讀檔了。
1、測試某幾個特殊網頁的access time和ping latency
2、測試ftp網站的上傳及下載速度
3、將之輸出為pdf檔。
所以我的作法是
1、用rrdtool來處理儲存及繪圖的部份
2、用fpdf來出pdf檔。將前述的圖及表包起來。
但作完後有一個問題。同一個時間區段的資料,用大圖和小圖竟然會有不同的輸出結果:
例如:
大圖727x233
可以看出,Maximum是115.64,
小圖267x121,Maximum竟然變成了89,
猜想是因為x軸沒有辦法畫到最右邊的關係。但...取值時是損讀取RRD檔,怎麼會和graph有關?
似乎沒有什麼好解法,使用--full-size-mode 可以暫時排除,並且只保留Y軸的大小。(圖變成了400x80)
但這樣圖會變的很醜...像這樣。我如果出這種圖應該會被打死吧。
所以不得不找其它解,其中一個解法就是先產出大圖,再用imagemagic來把它轉成小圖,但這樣會變的很小很糊...
語法如下: ( 727x205 to )
convert facebook-latency.png -resize 20% facebook-latency.png
或者圖型會變的很胖,即使把Y軸的說明文字拿掉也一樣難看。
嵌入PDF檔後,更是失敗。
試了一個小時,沒有什麼好辦法。只好從其它方面著手。
就是從pdf的產出程式來動手,最後在輸出image檔時,強制指定尺寸為95*40,順利結案。
看來fpdf縮圖的功力不錯。
$pdf->Image("$PATH/facebook-latency.png",10,110,95,40,'PNG');
最後貼一下出的pdf檔。其實因為+8的問題也弄了很久。
之後是直接說這個報表是昨天08:00 到今天08:00的就好。
否則如果真的圖檔也要從00:00到00:00,那我就必需直接讀rrd作運算,而不能使用rrdfetch的功能來直接讀檔了。
訂閱:
文章 (Atom)





