顯示具有 centos 標籤的文章。 顯示所有文章
顯示具有 centos 標籤的文章。 顯示所有文章

2013年1月23日

[Perl] Linux 上使用 Perl 查詢 Microsoft SQL Server

Perl 連接 MySQL 這種就不用多說了,Google 一下就很多教學 今天來談的是 Linux 裡面如何查詢微軟的 MS SQL Server

簡介如下

建置環境 : CentOS v6.2
程式語言 : Perl v5.10.1

一開始需先安裝 FreeTDS 程式,但是 yum 預設並沒有這個套件,所以要先前置作業下載 CentOS epel RPM , 記得看你的 CentOS 版本是 5 還是 6 找到對應的目錄去下載

安裝步驟
1. sudo su -
2. rpm -Uvh epel-release-6-8.noarch.rpm
3. vim /etc/yum.repos.d/epel.repo,把 [epel] 裡面的註解取消
4. yum update
5. yum install freetds.x86_64
6. yum install freetds-devel.x86_64
7. vim /etc/freetds.conf,新增如下

[SQLSERVER]
     host = your_sqlserver_hostname
     port = 1433
     tds version = 7.0


安裝完成後可以先執行 tsql 測試
 tsql -S sqlserver.hostname.com -U sqlusername -D your_db_name

進去後再下
select * from sys.Tables;
GO
quit

也可以改成 "一行執行"
printf "SELECT * FROM httpstatus\ngo\n" | tsql -S sqlserver.hostname.com -U sqlusername -P sqlpassword -D your_db_name

前置作業完成後,再來要安裝 Perl 模組 DBD::Sybase,你沒看錯真的是 Sybase 模組(緣由請參考這裡)

 安裝步驟
1. export SYBASE=/usr (這行要有不然安裝時會出現找不到 sybase library 錯誤)
2. cpanm DBD::Sybase

都完成後終於要開始寫程式啦, 程式碼如下
#!/usr/bin/perl

#use lib ('./modules');
use DBI;
use DBD::Sybase;

my $database = "your_db_name";
my $username = 'sqlusername';
my $password = 'sqlpassword';

#SQLSERVER 字串對應至 /etc/freetds.conf 裡面的 [SQLSERVER] tag
$dsn = "DBI:Sybase:server=SQLSERVER;database=$database";

my $dbh = DBI->connect($dsn, $username, $password) or die "Database connection not made : $DBI::errstr";

my $sql = "SELECT TOP 5 * FROM httpstatus order by testtime desc";
my $sth = $dbh->prepare( $sql );
$sth->execute() or die "unable to execute query $sql, error $DBI::errstr\n";

$rows = $sth->rows;

while ( @first = $sth->fetchrow_array ) {
        foreach $field (@first) {
                print "$field ";
        }
        print "\n";
}

$sth->finish();
undef $sth;
$dbh->disconnect();

print "Query successfully\n";

資考資料 : http://dolio.lh.net/~apw/doc/HOWTO/HOWTO-Connect_Perl_to_SQL_Server.pdf

2012年4月19日

CentOS 載入 MIB file

一般網路設備都有支援 SNMP 網管功能,但直接使用 snmpwalk 去看由於作業系統沒有載入設備的 MIB file 所以無法解析 OID 跟設備的對應關係,只看得到一堆 1.3.6.1.4.1.......

所以我們必須載入廠商提供的 Mib file,讓我的 CentOS 知道對應關係,方法如下

1. 複製廠商 Mib file 到 /usr/share/snmp/mibs/ 例如我們需要三個檔案

cp RBN-IPPOOL-MIB.my /usr/share/snmp/mibs/

cp RBN-SMI.my /usr/share/snmp/mibs/

cp RBN-TC.my /usr/share/snmp/mibs/


2. 在要執行程式的使用者下面建立 .snmp 目錄,並將剛剛三個檔案的檔案寫入 snmp.conf 設定檔

mkdir $HOME/.snmp

echo "mibs +RBN-IPPOOL-MIB" >> $HOME/.snmp/snmp.conf

echo "mibs +RBN-SMI" >> $HOME/.snmp/snmp.conf

echo "mibs +RBN-TC" >> $HOME/.snmp/snmp.conf


測試

snmptranslate -Td 1.3.6.1.4.1.2352.2.15 /usr/bin/snmpwalk -v 2c -c community 10.20.1.2 1.3.6.1.4.1.2352.2.15


如果有把 OID 解析成名稱, 那就成功囉~

2012年3月3日

[CentOS] date 顯示上個月, 兩個月前的月份

做 log housekeeping 時可用

這個月是 201203

上個月份
date -d 'last-month' +%Y%m
顯示 201202

前兩個月
date -d '2 months ago' +%Y%m
顯示 201201

2011年12月13日

CentOS 6.0.x 升級為 6.1

最近 CentOS v6.1 release, 本身是使用 CentOS v6.0.4 於是使用 yum update , 但只會升到 CentOS v6.0.6 不會到 6.1

查了一下是要加上參數 --releasever, 如下

yum update -y --releasever=6.1

這樣就可以利用 yum 升到 CentOS v6.1 了~

2011年11月1日

加強 CentOS YUM 的內容

安裝 EPEL 增強套件庫,這是由 Fedora project 所蒐集的常用軟體內容,增強了 YUM 本身收錄軟體太少的不足

CentOS 5 執行以下指令即可安裝
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm

安裝完了同樣使用 yum search, 就會發現很多以前找不到的套件現在都有囉~

2011年8月30日

開啟 CentOS 6 內建 rsyslogd 的外部 log 接收功能

新版 CentOS 6 改用 rsyslog 取代 syslogd,所以用法也不同

Server 端開啟方式如下
1. vim /etc/rsyslog.conf
2. 將此兩行的註解 # 取消
#$ModLoad imudp.so
#UDPServerRun 514
3. 存檔離開
4. /etc/init.d/rsyslog restart
5. netstat -ntulp | grep 514

有看到 0.0.0.0:514 就可以收工了~

同場加映 Client 設定方法
1. vim /etc/rsyslog.conf , 移到最下面
2. 新增 *.* @你的Log server IP:514
3. 存檔
4. /etc/init.d/rsyslog restart

接著去 log server 下 tail -F /var/log/secure
然後去 client 的 server 登入隨便一個使用者
就會在 log server 看到登入資訊啦!

再收工一次!

2011年8月10日

CentOS 5 / RHEL5 偵測 CPU 溫度 (安裝 lm_sensors)

先下載必須的檔案

1. dkms 2.0.17.4-1.e15.rf.noarch.rpm 下載點:
dkms-2.0.17.4-1.el5.rf.noarch.rpm
2. dkms-coretemp module 下載點:dkms-coretemp-1.00-1.noarch.rpm

安裝 dkms
rpm -ivh dkms-*

先安裝相依檔案
yum install kernel-devel.i686
yum install bison
yum install flex

下載 lm-sensors v3.3.1
下載點

解壓並安裝
安裝 lm-sensors 3.3.1
1. bzip2 -d lm_sensors-3.3.1.tar.bz2
2. tar xvf lm_sensors-3.3.1.tar
3. cd /lm_sensors-3.3.1
4. make install

設定
執行安裝目錄下的 /lm_sensors-3.3.1/prog/detect/sensors-detect 作系統偵測,過程中都按 Enter 鍵就可以:
1. 先 chmod 755 sensors-detect
2. ./sensors-detect

再把執行檔複製到路徑中:
cp /usr/local/sensors /usr/bin/sensors

執行 sensors 就可以看到 CPU 溫度了!

參考 : 暉獲無度的步烙閣

2011年5月15日

安裝 PHP 模組與中文字在 URL 上的編碼

今天要實作中文字串在 URL 裡面編碼的功能,所以找了一些 PHP 資料後得知要採用 urlencode + mb_convert_encoding (先把 BIG5 轉成 UTF-8 再把字串 urlencode)

程式語法如下:
$enc_address = urlencode(mb_convert_encoding($userinput, "UTF-8", "BIG5"));
主要是把中文原先為 BIG5 編碼的地址轉編碼為 UTF-8 然後存成 $enc_address

結果執行後出現 "PHP Fatal error: Call to undefined function mb_convert_encoding()",看起來是沒有安裝模組,執行 php -m 果然沒看到 mbstring 模組,後來找到解法很簡單,執行 yum install php-mbstring 來安裝,跑完就可以用囉~

2009年6月12日

防止 yum 更新 kernel的作法

因為使用 Oracle DB 的關係,所以CentOS的Kernel版本不能有所變動,但又需要用 yum 來更新軟體的版本,此時要避免更新 kernel 的話,可在 /etc/yum.conf 加入這一行存檔

exclude=kernel*

這樣再下

yum -y update

就可以放心更新而不會變動的 kernel 了

2009年2月2日

CentOS 安裝完的中文顯示亂碼

由於資料庫的關係,所以必須安裝較舊版本的Centos v4.7,安裝完後用 vim 編輯檔案卻出現提示的說明都亂碼,查了一下發現只要改設定就好了

step1: vi /etc/sysconfig/i18n (修改i18n檔案)
step2: 將原本內容去除,改為改為如下
LANG="zh_TW.Big5"
SUPPORTED="zh_TW.Big5:zh_TW:zh"

存檔之後,重新連線一次,應該就搞定!

2009年1月22日

CentOS v5.2 安裝 PPTP Server



--先檢查系統 MPPE, 基本上CentOS預設都有, 看到ok就可繼續往下
modprobe ppp-compress-18 && echo ok

--下載套件, 我們用的是 poptop 的套件
wget http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-1.rhel5.1.i386.rpm
wget http://poptop.sourceforge.net/yum/stable/packages/ppp-2.4.4-9.0.rhel5.i386.rpm

--安裝
rpm -ivh pptpd-1.3.4-1.rhel5.1.i386.rpm
rpm -ivh ppp-2.4.4-9.0.rhel5.i386.rpm

--設定Server基本資料
vim /etc/pptpd.conf

option /etc/ppp/options.pptpd
logwtmp
#這個是你Server的IP, 我是用ddns對應的所以也可以打domain
localip mylab.dyndns.org
#
這是你要發給User的虛擬IP, 這裡的意思是從11開始發到20,總共可以有十個User同時上線
remoteip 192.168.2.11-20

--新增PPTP帳密
vim
/etc/ppp/chap-secrets

# Secrets for authentication using CHAP
# 以下是新增使用者 taiwanwolf 密碼為 1234
taiwanwolf pptpd 1234 *

--設定 run level
chkconfig --level 35 pptpd on

--可以啟動服務囉
service pptpd start

--為了讓使用者的封包可以出得去, 還需改一下
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

--讓設定生效
sysctl -p

--在iptables要增加以下設定
#PPTP
/sbin/iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 47 -j ACCEPT
/sbin/iptables -A INPUT -p gre -j ACCEPT

--如果User撥上後出不去, 可在iptables加上以下設定
/sbin/iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE