Time of Update: 2017-01-18
Shell指令碼:1、#! 指定指令碼執行的shell2、# 注釋 3、命令或文法結構echo "輸入內容"echo 輸出空行執行:1、shell 指令碼 sh example2、給shell指令碼執行許可權 chmod u+x example案例:example sysinfo.sh 3abc x 不能以數字開頭abc3ABC3環境變數-大寫 命令執行結果賦值變數使用
Time of Update: 2017-01-18
The awk function split(s,a,sep) splits a string s into an awk array a using the delimiter sep.set time = 12:34:56set hr = `echo $time | awk '{split($0,a,":" ); print a[1]}'` # = 12set sec = `echo $time | awk '{split($0,a,":" ); print a[3]}'` # = 56#
Time of Update: 2017-01-18
發現一個特尷尬的事實。我辛辛苦苦去百度資料,想用rewrite實現針對不同標題來源站故障後的自動跳轉功能,但整個思路裡遺漏了一個嚴重的問題。按我的思路,針對請求的url進行一次curl,然後根據http_code去改寫url或者原樣輸出——這也就意味著,每一個請求,squid都回源去取一次header。那麼對於來源站點來說,前面squid的緩衝率,就是0%!完全沒有效果。得重新想過辦法……難道去看squid原始碼?汗本著有頭有尾善始善終的原則,決定還是把原先那個雞肋想法寫完。根據squid權威指
Time of Update: 2017-01-18
這種email警示指令碼遍地都是,很多用的sendmail、postfix,感覺有些大材小用了;也有些用perl的NET::SMTP和Authen::SASL模組發信的,不過我perl用的不好,老發出些莫名其妙的郵件來(比如if(a>1){print(a);},最後郵件裡的顯示的是0.99……);最後採用sendEmail這個成型的perl程式發信警示,而即時監控部分迴歸shell,終於完成。複製代碼 代碼如下:wget <a
Time of Update: 2017-01-18
第一思路,用iptables把外網ssh的包DROP掉;第二思路,用tcpwrapper把sshd的allow寫死;第三思路,修改sshd_config,只監聽內網請求。由於一些說不清楚的原因,iptables的辦法沒法用;而tcpwrapper佔用CPU資源較多;所以最後決定用第三種辦法。公司伺服器比較多,而且根據隨機登入查看的結果,sshd_config內容居然還太不一樣~~手工幹了一天,改了兩組伺服器後,終於下定決心要整個全自動指令碼出來幹活…… 目前的辦法是這樣的:cat
Time of Update: 2017-01-18
指令碼內容:複製代碼 代碼如下:#!/bin/bashfor ip in `cat ip.lst`do./ssh.exp $ip > /dev/null 2&>1doneNK=`awk 'BEGIN{bs=4000000}/access/{if($1>bs){nk=NR-1;print nk}}' exp.log`for nnk in $NKdoawk -F"[@|']" 'NR=='"$nnk"' {print $2}'
Time of Update: 2017-01-18
最近遇到了一個麻煩事:機器上郵件隊列裡老是被塞滿,但是又不知道是什麼地方發郵件寫入的,十分蛋疼,沒辦法,只有臨時處理一下了,寫了個刪除郵件的指令碼rm_mqueue.sh。複製代碼 代碼如下:#/bin/bash ###################################### # touched by lingyun1 on 2014-12-01 # ######################################
Time of Update: 2017-01-18
伺服器的安全穩定是每個營運都希望達到的目標,畢竟網站一旦流量大了,訪問高了,就會有一些無聊人來攻擊,幫忙檢測漏洞是好,但純ddos的性質就很惡劣了.說遠了,這篇文章只是檢測有非法ip登入到伺服器上就自動給營運警示,當然也可以改成簡訊警示,前提是你有簡訊網關.複製代碼 代碼如下:#!/bin/bash#該指令碼作用是檢測是否有惡意IP登陸伺服器並郵件警示#可以結合139郵箱以達到簡訊及時通知到手機的功能#適用系統centos5 Ldate=`which date`Lawk=`which
Time of Update: 2017-01-18
公司伺服器最近兩天老是因為記憶體被使用滿而造成死機,實在是受不了老叫機房的人去幫忙重啟,專門寫了個指令碼來釋放下記憶體,當然這台伺服器不是太重要,我粗魯的處理方式估計不會適合大多數伺服器,請大家使用之前先考慮清楚,不然造成資料丟失就不關我的事了.指令碼內容:cat check-mem.sh複製代碼 代碼如下:#!/bin/bashmem_total=`free -m | awk 'NR==2' | awk '{print $2}'`mem_free=`free -m | awk 'NR==3'
Time of Update: 2017-01-18
樣本資源清單如url.txt:複製代碼
Time of Update: 2017-01-18
擷取網頁快照並產生縮圖可分兩步進行:1、擷取網頁快照2、產生縮圖擷取網頁快照這裡我們用 phantomjs 來實現。關於 phantomjs 的詳細用法可參考官方網站。http://phantomjs.org/1、安裝我的環境是CentOS6.5,安裝時直接下載 tarball 然後解壓即可。複製代碼 代碼如下:# wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.8-linux-i686.tar.bz2#
Time of Update: 2017-01-18
我們有這樣一個字串:複製代碼 代碼如下:info='abcd;efgh'現在想擷取abcd和efgh,我們可以簡單地用cut工具來擷取:複製代碼 代碼如下:fstr=`echo $info | cut -d \; -f 1`sstr=`echo $info | cut -d \; -f 2`這裡主要是用了cut工具的-d和-f參數:-d:指定欄位的分隔字元,預設的欄位分隔符號為“TAB”; -f:顯示指定欄位的內容;關於cut工具其他參數可參考這裡:cut命令
Time of Update: 2017-01-18
ini檔案格式一般都是由節、鍵、值三部分組成格式:[第一節 ]第一個鍵 = 值第二個鍵 = 第二個值[第二節 ]第一個鍵 = val1,val2,val3例子:複製代碼 代碼如下:[COM]KINGGOO =
Time of Update: 2017-01-18
有時我們需要遞迴刪除空檔案夾,網上找了一下,沒有發現比較好的Shell指令碼,於是自己動手寫了一個指令碼複製代碼 代碼如下:#!/bin/bash# author: 十年後的盧哥哥# des: delete empty directories recursivedeleteempty() { find ${1:-.} -mindepth 1 -maxdepth 1 -type d | while read -r dir do if [[
Time of Update: 2017-01-18
A:本指令碼啟動並執行機器,Linux RHEL6B,C,D,...:待安裝zookeeper cluster的機器, Linux RHEL6首先在指令碼啟動並執行機器A上確定可以ssh無密碼登入到待安裝zk的機器B,C,D,...上,然後就可以在A上運行本指令碼:複製代碼 代碼如下:$ ./install_zookeeper 前提:B, C, D機器必須配置好repo,本指令碼使用的是cdh5的repo,
Time of Update: 2017-01-18
A:本指令碼啟動並執行機器,LinuxB:待安裝JDK的機器, Linux首先在指令碼啟動並執行機器A上確定可以ssh無密碼登入到待安裝jdk的機器B上,然後就可以在A上運行本指令碼:複製代碼 代碼如下:$ ./install-jdk.sh B的IP or:複製代碼 代碼如下:$ ./install-jdk.sh "B的IP" "JDK的URI"
Time of Update: 2017-01-18
“古老的 Sys IPC 仍然有好幾種有效用途。三種 IPC 對象是共用記憶體,號誌和訊息。”當使用到 IPC 的這些對象時,你需要為每個對象建立一個 Key。雖然理論上來說我們在定義一個 IPC Key 的時候可以使用任意自己喜歡的 Key ,但為了避免與其他的程式產生定義重複,在 UNIX/Linux 中一般會使用 key_t ftok(const char *path, int id) 函數來產生一個比較唯一的 Key 值。然而,“每個人都討厭 System V IPC。它比打孔紙帶還慢,
Time of Update: 2017-01-18
啟用 apache 的 mod_ssl 之後需要有認證才能正常運作。寫了個指令碼來操作。首先要確定機器上已經有 openssl 。複製代碼 代碼如下:#!/bin/sh## ssl 認證輸出的根目錄。sslOutputRoot="/etc/apache_ssl"if [ $# -eq 1 ]; then sslOutputRoot=$1fiif [ ! -d ${sslOutputRoot} ]; then mkdir -p ${sslOutputRoot}ficd
Time of Update: 2017-01-18
先瞭解下,在bash指令碼中,有三種引號1. 單引號 '2. 雙引號 "3. 反引號 `單引號 兩個單引號包圍起來的字串就是普通的字串,它將保留原始的字面意思.雙引號 兩個雙引號包圍起來的字串,部分特殊字元將起到它們的作用. 這些特殊字元有:
Time of Update: 2017-01-18
1.定義變數時, =號的兩邊不可以留空格.eg:gender=femal————rightgender =femal———–wronggender= femal———–wrong2.條件測試語句 [ 符號的兩邊都要留空格.eg:if [ $gender = femal ]; then——-right.echo “you are femal”;fiif[ $gender...-----------------------wrongif [$gender...--------------------