原文:https://www.3qos.com/article/101.htmlhtml
做者:容易 日期:2015-03-17python
備註:非本人贊成,請勿轉載mysql
安裝過程c++
系統需求:以centos6.4爲例sql
選擇 base server 安裝shell
而後 安裝額外的GCC編譯環境便可centos
yum install gcc gcc-c++ 服務器
如下是小工具所需的軟件包網絡
使用到的軟件和包python+pyzmq,系統命令有wget和tail併發
小工具的安裝步驟,純編譯安裝,避免破壞現有系統環境。
mkdir /oaos
tar -zxvf Python-2.7.9.tgz
cd Python-2.7.9
./configure --prefix=/oaos/python
make && make install
tar -zxvf setuptools-12.1.tar.gz
cd setuptools-12.1
/oaos/python/bin/python setup.py build
/oaos/python/bin/python setup.py install
unzip pyzmq-2.2.0.1.zip
cd pyzmq-2.2.0.1
/oaos/python/bin/python setup.py build
/oaos/python/bin/python setup.py install
備註:master端須要 os_server.py,和os_add_job.py文件,client端只須要部署os_client.py便可
將master端代碼保存文 os_server.py
將add_job工具代碼保存爲 os_add_job.py
將client端代碼保存爲 os_client.py
master端啓動os_server爲守護進程
/oaos/python/bin/python os_server.py start/stop/restart(啓動,中止和重啓)
client端啓動os_client.py爲守護進程
啓動前請設置好與master端鏈接的網絡接口和master端監聽的ip和端口
/oaos/python/bin/python os_client.py start/stop/restart(啓動,中止和重啓)
部署os_add_job.py
必須部署在master服務器上,而且將os_add_job.py存放於os_server.py相同的路徑。
編輯os_add_job命令的配置文件task.ini,將文件存放在os_add_job.py的相同目錄,該配置文件就是須要批量發佈任務的信息。
配置文件內容以下,直接是vi編輯便可
[master]
sock=tcp://192.168.4.194:7777
[ip_list]
ip=192.168.4.195,192.168.4.196,192.168.4.197,192.168.4.198
[job_info]
type=c
task=ls -rlt
cmdtimeout=8
jobtimeout=10
env=sh
fileserver=http://192.168.0.227/ser/
rundir=/root/
該任務配置文件的的任務描述以下,master地址的接口爲tcp://192.168.4.194:7777
須要執行該任務的客戶端IP爲192.168.4.195,192.168.4.196,192.168.4.197,192.168.4.198
任務的類別爲 命令
執行的命令爲 ls -rlt
命令的超時時間爲8秒
任務的超時時間爲10秒
備註:任務超時因該大於單個命令的超時時間,不然可能命令執行成功,可是會被記錄爲超時失敗,後續加個判斷改進
執行任務的環境是 sh shell
因爲該任務是普通命令全部 腳本下載服務器fileserver併發必須
運行目錄爲/root/
如下是master端運行後的相關文件和目錄,若是不部署爲client端os_client.py能夠不部署
[root@salt-master-194 oaos]# ls
os_add_job.py job log os_client.py os_server.py run task.ini
執行os_add_job.py 發佈批量任務
root@salt-master-194 oaos]# /oaos/python/bin/python os_add_job.py
job add ok,job log job/1425270675.log
----------------------job report start--------------------------
job 1425270675 start
192.168.4.195 code:0
total 114
drwxr-xr-x. 2 root root 4096 Sep 23 2011 srv
drwxr-xr-x. 2 root root 4096 Sep 23 2011 mnt
......................
drwxr-xr-x 2 root root 0 Feb 13 08:53 net
drwxr-xr-x 16 root root 3660 Feb 13 08:53 dev
dr-xr-xr-x. 11 root root 4096 Feb 13 09:11 lib
dr-xr-xr-x. 9 root root 12288 Feb 13 09:21 lib64
dr-xr-x---. 5 root root 4096 Feb 14 07:10 root
drwxr-xr-x 8 root root 4096 Feb 14 10:31 app
drwxr-xr-x 5 root root 4096 Feb 28 01:21 oaos
dr-xr-xr-x. 2 root root 4096 Feb 28 03:06 bin
drwxr-xr-x. 99 root root 12288 Feb 28 03:06 etc
drwxrwxrwt. 4 root root 4096 Mar 1 03:43 tmp
192.168.4.194 code:0
total 5847912
drwxr-xr-x 7 201 201 4096 Nov 17 2012 vmware-tools-distrib
-rw-r--r--. 1 root root 7572 Sep 3 04:24 install.log.syslog
-rw-r--r--. 1 root root 26505 Sep 3 04:25 install.log
...........................
drwxr-xr-x 2 root root 4096 Feb 28 10:19 log
drwxr-xr-x 2 root root 4096 Mar 1 23:28 bak
192.168.0.61 code:0
total 178
drwxrwxr-x 4 oracle dba 4096 Nov 24 2010 oracle
drwxr-xr-x 2 root root 4096 May 11 2011 srv
drwxr-xr-x 2 root root 4096 May 11 2011 mnt
drwx------ 2 root root 16384 Sep 20 2012 lost+found
...................
drwxr-xr-x 2 root root 12288 Sep 20 2012 sbin
drwxr-x--- 16 root root 4096 Nov 22 2012 root
drwxr-xr-x 4 wls bea 4096 Dec 26 2012 bea
dr-xr-xr-x 138 root root 0 Jan 7 2013 proc
............................
drwxr-xr-x 94 root root 12288 Feb 28 04:02 etc
drwxr-xr-x 5 root root 4096 Feb 28 14:20 oaos
drwxrwxrwt 8 root root 4096 Mar 2 04:02 tmp
192.168.4.196 code:0
total 5829828
drwxr-xr-x 7 201 201 4096 Nov 17 2012 vmware-tools-distrib
-rw-r--r--. 1 root root 7572 Sep 3 04:24 install.log.syslog
-rw-r--r--. 1 root root 26505 Sep 3 04:25 install.log
-rw-------. 1 root root 1249 Sep 3 04:25 anaconda-ks.cfg
-r--r--r-- 1 root root 66611473 Sep 3 04:43 VMwareTools-8.6.10-913593.tar.gz
-rwx------ 1 root root 4353378304 Sep 3 04:58 CentOS-6.4-x86_64-bin-DVD1.iso
-rwx------ 1 root root 1452388352 Sep 3 04:59 CentOS-6.4-x86_64-bin-DVD2.iso
-rw-r--r-- 1 root root 32979820 Sep 3 05:17 mysql-5.6.20.tar.gz
-rw-r--r-- 1 root root 34601551 Sep 3 05:17 percona-xtrabackup-2.2.3.tar.gz
-rwxr-xr-x 1 root root 58069 Sep 3 05:17 orzdba.pl
-rw-r--r-- 1 root root 29650115 Feb 13 08:55 salt_stack.tar.gz
-rw-r--r-- 1 root root 116 Feb 13 09:03 setup.cfg
drwxrwxr-x 23 501 501 4096 Feb 13 10:02 stack
job 1425270675 end
----------------------job report end---------------------------
You have new mail in /var/spool/mail/root
以上是批量發佈命令,下面這個是批量發佈腳本
task.ini的內容以下,任務類別是運行腳本,腳本名爲chgpass.sh,做用是變動某個用戶的密碼
[master]
sock=tcp://192.168.4.194:7777
[ip_list]
ip=192.168.4.195,192.168.4.196,192.168.4.197,192.168.4.198
[job_info]
type=s
task=chgpass.sh
cmdtimeout=8
jobtimeout=10
env=sh
fileserver=http://192.168.0.227/ser/
rundir=/root/
執行和輸出以下
[root@salt-master-194 oaos]# /oaos/python/bin/python os_add_job.py
job add ok,job log job/1425270947.log
----------------------job report start--------------------------
job 1425270947 start
192.168.4.195 code:252
passwd: Unknown user name 'oracle'.
192.168.0.61 code:0
Changing password for user oracle.
passwd: all authentication tokens updated successfully.
192.168.4.196 code:252
passwd: Unknown user name 'oracle'.
192.168.4.194 code:252
passwd: Unknown user name 'oracle'.
job 1425270947 end
----------------------job report end---------------------------
小工具的配置和運行過程就這麼簡單,部署好後,若是須要發佈任務和腳本,只須要簡單編輯task.ini文件便可,若是發佈腳本,將須要發佈的腳本上傳至http服務器,提供給客戶的下載便可,若是喜歡能夠留言交易。