官方網站: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月29日 星期二
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
使用工具 : 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
測試環境 : 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>
不登入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
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`
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`
訂閱:
文章 (Atom)