2015年12月29日 星期二

[Parser] - PHP 抓取網頁內容變成 DOM object

官方網站:http://simplehtmldom.sourceforge.net/
使用說明:http://simplehtmldom.sourceforge.net/manual.htm

抓取  simple_html_dom.php
# wget  http://sourceforge.net/projects/simplehtmldom/files/simple_html_dom.php/download

編輯程式
# vim getdata.php

<?PHP

include_once('simple_html_dom.php');
header("Content-Type:text/html; charset=utf-8");

$url = 'https://xxxx';
$html = file_get_html($url);
$ret = $html->find('a[class=list-button]');

// Find all links

foreach( $ret as $element)
$list[] =  $element->href ;
echo  '<pre>' ; print_r($t) ; echo '</pre>';

// 可把 array list 寫到 DB 或 變成 json 格式

?>

2015年12月28日 星期一

[Watch] - 偵測某各目錄下檔案變動 ifttt

環境 Debian 8
使用工具 :  inotify-tools

# apt-get install inotify-tools

使用  inotifywait 撰寫 shell

# vim watch.sh

#!/bin/sh
inotifywait -m 預監控的目錄 -e create -e moved_to |
while read path action file; do
echo "The file '$file' appeared in directory '$path' via '$action'"
cat content.txt | mail -s "[xxx] xx 通知  - $file"  fifi@xxxx -- -f fifi@xxx

# do something with the file
done


# chmod + x watch.sh
# runlevel

2015年12月23日 星期三

[Monitor] Zabbix 2.X



測試環境 : Debian8 64bit ( Vmware EXSI 後續可以用 Docker  ^^ )

G1 : 192.168.89.100 ( Zabbix Server   )
L1 : 192.168.89.211 ( Agent 1 )
L2 : 192.168.89.212 ( Agent 2 )
D1 : 192.168.89.111 ( Agent 3  )
D2 : 192.168.89.112 ( Agent 4  )

1. 安裝套件

# sudo apt-get install zabbix-server-mysql
# sudo apt-get install zabbix-frontend-php
# sudo apt-get install php5-mysql
# sudo apt-get autoremove php5-pgsql


2. 修改後台所需參數

# sudo vim /etc/php5/apache2/php.ini


php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value date.timezone ASIA/Taipei

3. 建立 DB 權限  User /  匯入資料庫

# mysql -u root -p
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'xxxxxx';
mysql> flush privileges;

# zcat /usr/share/zabbix-server-mysql/{schema,images,data}.sql.gz | mysql -uzabbix -p

4. 設定 Zabbix Server 參數
# sudo vim /etc/zabbix/zabbix_server.conf

DBName=zabbix
DBUser=zabbix
DBPassword=xxxxxx
DBSocket=/var/run/mysqld/mysqld.sock

5. 設定後台網頁

#sudo vim /etc/zabbix/zabbix.conf.php
<?php
// Zabbix GUI configuration file
global $DB;

$DB['TYPE']     = 'MYSQL';
$DB['SERVER']   = 'localhost';
$DB['PORT']     = '3306';
$DB['DATABASE'] = 'zabbix';
$DB['USER']     = 'zabbix';
$DB['PASSWORD'] = 'xxxxxx';

// SCHEMA is relevant only for IBM_DB2 database
$DB['SCHEMA'] = '';

$ZBX_SERVER      = 'localhost';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = 'G1';

$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
?>

# ln -s /usr/share/zabbix  /var/www/html/

6. 啟動 Zabbix Server 服務

# sudo /etc/init.d/zabbix-server restart

7. 打開 Browser  輸入 http://G1/zabbix/
預設帳號/密碼 : Admin/zabbix

# Other 假設要設定中文打開 array 即可

# sudo vim /usr/share/zabbix/include/locales.inc.php
'zh_CN' => array('name' => _('Chinese (zh_CN)'),        'display' => true),
'zh_TW' => array('name' => _('Chinese (zh_TW)'),        'display' => true),

# 解決圖形亂碼

# copy Windows 某個字型  ex. C:\Windows\Fonts\微軟正黑體
# mv /tmp/msjhbd.ttf /var/www/html/zabbix/fonts/
# vim /var/www/html/zabbix/include/defines.inc.php
define('ZBX_FONT_NAME', 'msjhbd');
define('ZBX_FONT_NAME', 'msjhbd');

8. 安裝 zabbix-agent
#  sudo apt-get install zabbix-agent

修改 agent 參數
# sudo vim /etc/zabbix/zabbix_agentd.conf
Server=G1
ServerActive=G1
Hostname=G1



[HA] - Mariadb + Galera

參考 https://goo.gl/uF18Yg

測試環境 : Debian8 64bit   PS ( InnoDB  Only / Myisam 不支援 , 也不建議開啟 )

D1 : 192.168.89.111 ( Node 1  )
D2 : 192.168.89.112 ( Node 2  )

1. 設定 Node1 / Node2 主機名稱
# vim /etc/hosts

192.168.89.211  L1
192.168.89.212  L2
192.168.89.111  D1
192.168.89.112  D2
192.168.89.100  G1


2 MariaDB repo 加進系統
# sudo apt-get install python-software-properties
# sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
# sudo add-apt-repository 'deb http://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/repo/10.0/debian wheezy main'

3 安裝套件
# sudo apt-get update
# sudo apt-get install mariadb-galera-server-10.0


4. Node 1 & Node2 兩台都先進去 Mariadb 設定帳號
# mysql -uroot -p

MariaDB [(none)]> > GRANT USAGE ON *.* TO cluster@'%' IDENTIFIED BY 'xxxxxx';
MariaDB [(none)]> > GRANT ALL PRIVILEGES ON *.* TO cluster@'%';
MariaDB [(none)]> > GRANT USAGE ON *.* TO cluster@'localhost' IDENTIFIED BY 'xxxxxx';
MariaDB [(none)]> > GRANT ALL PRIVILEGES ON *.* TO cluster@'localhost';
MariaDB [(none)]> > FLUSH PRIVILEGES;

5. 先設定 Node 1  192.168.89.111
# vim /etc/mysql/conf.d/wsrep.cnf

[MYSQLD]
wsrep_provider=/usr/lib/galera/libgalera_smm.so
binlog_format="row"
wsrep_cluster_name="MYCLUSTER"
wsrep_node_address="192.168.89.111"
wsrep_node_name="db1"
wsrep_cluster_address="gcomm://"
wsrep_sst_method=rsync
wsrep_sst_auth=cluster:xxxxxx

6. Restart 192.168.89.111  MariaDB
# sudo service mysql restart

7.  設定 Node2
# vim  /etc/mysql.conf.d/wsrep.cnf

[MYSQLD]
wsrep_provider=/usr/lib/galera/libgalera_smm.so
binlog_format="row"
wsrep_cluster_name="MYCLUSTER"
wsrep_node_address="192.168.89.112"
wsrep_node_name="db2"
wsrep_cluster_address="gcomm://192.168.89.111"
wsrep_sst_method=rsync
wsrep_sst_auth=cluster:xxxxxx

# sudo service mysql restart

8. 驗證服務 
# mysql -uroot -p -e "SHOW STATUS LIKE 'wsrep%';"

9. 災難驗證 , 避免 Single point of failure
# 停掉服務 或 主機 ( D1 or D2 )

2012年4月5日 星期四

Mysql 管理指令集

MySQL的語法 (無大小寫之分)


 不登入mysql 所使用指令

 

#建立及刪去資料庫
mysqladmin -u root  create test -p
mysqladmin -u root  drop test -p

#顯示資料庫
mysqlshow -u root -p

#顯示table
mysqlshow dataname

#顯示欄位
mysqlshow dataname table

#檢查權限之命令
mysqlaccess localhost user mysql -U root -P abc123 <==檢查user帳號的權限
mysqlaccess localhost caitl -U root -P <==檢查towns帳號的權限,會要求打入root 密碼

#登入mysql指令
mysql  -u root -p
mysql -h 遠瑞IP -u root -p

#mysql 登出中斷 (二種方式)
mysql> quit;
按Control-D


Mysql-CLI (mysql command line)


#顯示所有 MySQL 資料庫
 mysql> show databases;

#顯示該資料庫資料表
 mysql> show tables;

#顯示 data 資料表的欄位資訊
 mysql> show  COLUMNS from table_name;
#顯示系統狀態(詳細)
 mysql> show status;

#顯示系統狀態(簡單)
 mysql> status;
#顯示連線的狀態
 mysql> show table status;

#顯示mysql系統設定及變數
 mysql> show variables;
 mysql> show variables like '%max%';

#顯示 process list
 mysql> show processlist;

#顯示mysql所支持的不同權限有那些
  mysql> show privileges;

#顯示表格格式類能
 mysql> show table types;

#查看MySQL的版本
 mysql> select version();

#顯示系統現在所有user的帳號連線資料
 mysql> select * from mysql.user ;
 mysql> select * from mysql.user \G;

#顯示系統現在所有 user及從某ip連db的權限
mysql> select user, host from mysql.user ;

#顯示目前登入使用者的當時所建立權限的語法
 mysql> show GRANTS ;

#顯示 username 時下的 Grant 語法, 也可用此來做帳號備份.
 mysql> show grants for  username@localhost;

#顯示當初表格如何建立
 mysql> show create table user;

#顯示表的结構 
 mysql> DESCRIBE MYTABLE; 

#顯示innoDB存諸情況
  mysql> show innodb status;
  mysql> show logs; // 顯示BDB存储引擎的log日志
  mysql> show warnings; //顯示最後一個執行的語句所產生的錯誤、警告和通知
  mysql> show errors; // 只顯示最後一個執行语句所產生的錯誤

#建立 與 删除庫:
  mysql> create database 資料庫名;
  mysql> drop database 資料庫名;
#建表與刪表、清空與顯示表中記錄 :
  mysql> use 資料庫名;
  mysql> create table 表名(字段列表);
  mysql> drop table 表名;
  mysql> delete from 表名;
  mysql> select * from 表名;

#刪除指定內容
  mysql> DELETE * FROM 資料表名稱 WHERE 欄位名稱 = '要尋找的資料';
  
#尋找指定內容
  mysql> SELECT * FROM 資料表名稱 WHERE 欄位名稱 = '要尋找的資料';

#檢查 phpmyadmin table 是否有日久損毀資料的現象
  mysql> use phpmyadmin
  mysql> show tables ;
  mysql> CHECK TABLE  `table_name1` , `table_name2` , `table_name3` ;


#修復 table
 mysql>  REPAIR TABLE  `table_name1` , `table_name2` , `table_name3` ;

#重新讀取.更新記憶體上的資料
  mysql> FLUSH PRIVILEGES ;

#命令的取消
#當命令輸入錯誤而又無法改變(多行語句情形)時,只要在分號出現前就可以用 c來取消該條命令
mysql> select
-> user()
-> c
mysql>


2012年3月29日 星期四

[Debian] 32bit Ram 2G 限制問題

OS : Debian 6.04-i386-32bit
RAM : 32G

問題 : Debian6.04-i386(32-bit)版不支援 RAM 4G以上,只呈現2G

解決方法:

#ps -ef
# apt-get install linux-image-2.6-686-bigmem
#reboot

參考網頁 :  http://serverfault.com/questions/25366/linux-only-detects-2gb-of-ram-with-4-installed-i386-debian-lenny

[MYSQL] -權限相關設定

# 備份  
mysqldump  -u root -p  mysql > /tmp/fifimysql.sql
或 tar low data 方式 
a. 先停止 mysql /etc/init.d/mysql  stop
b. 下達指令 tar xxx.tar.gz 資料庫名稱 
或 gzip
mysqldump -u root -p fifitest | gzip - > fifitest.gz

# 還原
mysql  -u root -p  fifitest  <  fifimysql.sql
或 zip
zcat  fifitest.gz  | mysql -u root -p fifitest

# cli 模式 秀出所有資料庫 跟 指定資料庫
mysqlshow -u root -p
mysqlshow  -u root -p  fifitest db

# 進入 Mysql cli 模式 ( command line ) 
mysql -u root -p

# 建立資料庫
mysql> create database  `fifitest`;

# 秀資料庫
mysql> show databases ;

# 離開資料庫
mysql> quit ;

# mysqlshow  -u root -p  fifitest db

透過 phpmyadmin 操作後, 會有 mysql cli 模式指令

# 建立用戶test123 , 宣告密碼 111
CREATE USER 'test123'@'localhost' IDENTIFIED BY  '111';

# 宣告test123 這各身分在 localhost 可以做的權限
GRANT USAGE ON * . * TO  'test123'@'localhost' IDENTIFIED BY  '111' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

# 宣告 test123 再,  localhost 這一台裡面對於 fifitest 資料庫 , 有所有權限
GRANT ALL PRIVILEGES ON  `fifitest` . * TO  'test123'@'localhost';

# 新增宣告 test123 在 localhost 這台機器上 , 對於 123 這各資料庫 , 有四種權限
GRANT SELECT , INSERT , UPDATE , DELETE ON  `123` . * TO  'test123'@'localhost';

# 移除所有權限 ,    test123 在 localhost 這台機器上 , 對於 123 這各資料庫 
REVOKE ALL PRIVILEGES ON  `123` . * FROM  'test123'@'localhost';

# 再宣告
GRANT SELECT , INSERT , UPDATE ON  `123` . * TO  'test123'@'localhost';

# 檢查 table
use 哪各DB
CHECK TABLE  `pma_bookmark` ,  `pma_column_info` ,  `pma_designer_coords` ,  `pma_history` ,  `pma_pdf_pages` ,  `pma_relation` , `pma_table_coords` ,  `pma_table_info` ,  `pma_tracking`

# 修復 table
REPAIR TABLE  `pma_bookmark` ,  `pma_column_info` ,  `pma_designer_coords` ,  `pma_history` ,  `pma_pdf_pages` ,  `pma_relation` , `pma_table_coords` ,  `pma_table_info` ,  `pma_tracking`