發表文章

目前顯示的是有「shell」標籤的文章

Nginx Ip Whitelist (白名單快速轉成 nginx 使用的清單)

圖片
Nginx Ip Whitelist by pass whitelist ref: http://www.kitploit.com/2016/11/fireaway-next-generation-firewall-audit.html # 白名單設定方式可以參考 stackoverflow 這一篇 https://stackoverflow.com/questions/13917866/nginx-ip-whitelist # 中文可以參考這一篇 https://www.centos.bz/question/nginx-ip-whitelist/ 想把白名單快速轉成 nginx 使用的清單, 但是又不想寫太多程式。 所以直接用 google spreadsheets 轉成 csv 功能 透過 linux shell script 轉換成為 nginx 可以使用的清單 在實際工作動作: 客服人員:編輯 spreadsheets 檔案 系統人員:白名單轉成檔案驗證,並 reload nginx 生效. ## ---------------------------------------------------- ## linux script ## ---------------------------------------------------- #!/bin/bash # 編輯網址 , google doc 權限設定控制 # 將 google doc 白名單取出成為 csv URL="https://docs.google.com/spreadsheets/d/{請改成你的網址}/pub?gid=0&single=true&output=csv" echo "w3m -dump '${URL}' > whitelist.csv" | sh # 備份原本的白名單 mv -f customer_ip customer_ip.bak echo "# $(date -R) update." > customer_ip # 去除註解 grep -v '#' "whitel...

Linux ubuntu 的 soft raid 1 及 LVM 磁區的資料救援

圖片
圖不相關於此文 這幾天停電,發生剛好有一台老 server power 卦掉了。 想說就順便把資料轉移到新的機器上面, 他在還沒死掉前使用的是 ubuntu linux 系統 硬碟使用 soft raid 1 的架構。 硬碟我使用 usb 硬碟外接座,把裝置接到系統上面。可以使用 blkid 看看裝置代號。 epost mnt # blkid  /dev/sda1: UUID="96d81952-2c1b-4963-98e7-b203f0197686" TYPE="ext4"  /dev/sda5: UUID="8987b099-e672-4486-ae9c-7ccb12264b7f" TYPE="swap"  /dev/sdb1: UUID="08cd466a-fdd1-43ea-9f4d-97d12fbed8ae" TYPE="ext4"  /dev/sde1: UUID="6f575859-37a1-ff61-530b-09d8a1b789b6" UUID_SUB="c601821d-4bf7-0728-83ae-682c29864775" LABEL="bm:0" TYPE="linux_raid_member"  * 可以看到 type 為 linux_raid_member 的 type 型態,可以使用 mdadm 指令,把這裝置賦予到一個 raid 裝置。 mdadm --assemble --run /dev/md3 /dev/sde1 * 然後再用 mount 將它掛載到目錄就可以存取。 * 但是發現檔案系統竟然是 LVM2_member 的檔案架構, 所以需要用 LVM 的方式操作它。 epost mnt # mount /dev/md3 /mnt/sde mount: unknown filesystem type 'LVM2_member' * 看看這個系統的分割區, 是不是有其他裝置。結果竟然全部都沒有合法的分割表。 epost mnt # fdisk /dev/md3 ...

Linux Bash Shell for and loop (迴圈)

Linux Shell 上常用的 for in 迴圈結構,可以幫忙很多工作。 ---- for in 迴圈及結構 ---- # 帶入變數內容的迴圈,自訂字串 [mtchang@c7 linux_shell]$ vim for.sh #!/bin/bash for VAR in file1 file2 file3 do echo $VAR done # 設定可以執行權 [mtchang@c7 linux_shell]$ chmod +x for.sh  # 執行 [mtchang@c7 linux_shell]$ ./for.sh  file1 file2 file3 ---- for in 迴圈及結構,搭配程式執行結果 ---- # 將某個檔案或是程式執行的結果,帶入 for 迴圈內。 [mtchang@c7 linux_shell]$ head /etc/passwd | cut -f 1 -d: root bin daemon adm lp sync shutdown halt mail operator $ 使用 $() 將程式結果變成變數內容 [mtchang@c7 linux_shell]$ cat for_fileread.sh  #!/bin/bash for VAR in $(head /etc/passwd | cut -f 1 -d:) do echo $VAR done # 執行 [mtchang@c7 linux_shell]$ ./for_fileread.sh  root bin daemon adm lp sync shutdown halt mail operator ---- for in 進階的新功能 ---- # 程式 [mtchang@c7 linux_shell]$ cat for_adv.sh  #!/bin/bash for i in {1..5} do    echo "for loop 產生 1-5 目前內容為 $i " done echo 'Bash V4.0+ 功能 {START..END.....

Linux Shell -- for 迴圈

Linux Shell -- for 迴圈 Linux shell 可以使用 for 迴圈傳遞固定的值內容給迴圈內部變數 基本格式為: for  變數  in 值1  值2  值3   do   echo  變數  done 執行結果會是:  值1  值2  值3   # 範例如下:複製 dl 目錄到每一台主機,主機已經先設定 ssh key 認證 [hadoop@namenode happ]$ cat sync_dl2_all.sh  #!/bin/bash ACTION=$1 if [ "$ACTION" == "all" ]; then   for N in 1 2 3   do    echo "send to datanode${N}"    RUN="rsync -av --delete-after /home/hadoop/happ/dl hadoop@datanode${N}:/home/hadoop/"    echo $RUN    #echo $RUN | sh   done   exit 0 else   echo "usage:$0 all"   exit 1 fi [hadoop@namenode happ]$ ./sync_dl2_all.sh usage:./sync_dl2_all.sh all [hadoop@namenode happ]$ ./sync_dl2_all.sh all send to datanode1 rsync -av --delete-after /home/hadoop/happ/dl hadoop@datanode1:/home/hadoop/ send to datanode2 rsync -av --delete-after /home/hadoop/happ/dl hadoop@datanode2:/home/hadoop/ send to datano...