[筆記] 用pxe 安裝系統,完成後送出郵件通知 / send mail notification after pxe install

最近有個任務,需要大量安裝client

想用PXE來處理,只要user開機按F12(acer 桌機) 選擇PXE Boot

然後選擇OS版本,就可以自動進行安裝

安裝完成後,會自動重新開機,接著就用ansible來做user環境設定

PXE的部份本來是沒有什麼問題,自動安裝系統的部份都做好了

可是因為這次的量比較多,想說讓每一台在完成PXE安裝後的第一次重開機

就送出一封郵件來通知我,說已經完成安裝,可以執行ansible 了

看似很簡單的一件事情,卻搞了我兩天….

linux底下遠端遙控&管理的好用系統 Meshcentral / Remote Management & control system Meshcentral

之前在LAN/windows環境下,一直都是用ultravnc/winvnc/tigervnc之類的VNC軟體

但是如果要過 internet ,就會碰到各種開port的問題

在這種環境下,就有了當時 teamviewer 的橫空出世

解決了開PORT的問題,讓被控端(通常是資訊技術相對弱勢,需要接受幫助的一方)不需要懂太多

只要下載teamviewer被控端,開啟後報ID 給協助者就好了

Transfer File Content Using Xclip in Terminal

工作上常會需要用ssh登入遠端主機檢查LOG,有必要的時候,還要把log複製回本機來處理。

以前都是傻傻的用 scp 傳檔案

之前就記得有這個xclip/xsel 可以用,但是一直沒有弄清楚怎麼執行

早上研究了一下,順便做個筆記。

[筆記] inxi 蒐集詳盡的硬體資訊 / inxi Collect Detail Hardware Info

最近因為一直碰到硬碟故障的問題,算起來那一批同時購買的5X顆 seagate 2T硬碟,已經有一半以上故障返修了….

然後又因為一直沒有添購新的硬碟,只能用這些快過保/已過保的撐著

所以最近不斷的在更換機器內的硬碟,而且還沒有熱插拔!

也導致原本負責處理盤點資產的同事困擾,因為跟手邊的紀錄已經對不起來了

然後就變成要對資產的時候,需要一台一台登入,然後去下不同的指令,取得想要的硬體資訊,超級麻煩的!

[筆記] 用rsync 移轉 centos 6.2的老機器 Transfer Cent6.2 using rsync

公司的一台老伺服器空間不足了,要執行指令都會中斷,所以想要擴充空間。

看起來不難搞,事實上…..

[筆記] Ansible how to use 'list' in yaml file

這幾天在玩ansible 時,碰到一個問題

假如我有個yaml檔作為資料來源,檔名是 abc.yml

大概長這樣

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
  "teams": [
{
"chinese_name": "TEAM1",
"description": "TEAM1",
"gid": 10125,
"location": [
"hq"
],
"name": "aa",
"users": [
"chen",
"chou",
"huani",
"yey",
"wa"
]
},
{
"chinese_name": "TEAM2",
"description": "TEAM2",
"gid": 10126,
"location": [
"hq"
],
"name": "bb",
"users": [
"chhiao",
"chgc",
"chy",
"hsi",
"li",
"li",
"chgchi"
]
}
]

Nice Du Report Tool Durep

最近在重新規劃前人留下的backup爛攤子
各個伺服器統一備份到一台backup storage
想說如果每天能夠看到backup storage的磁碟用量的話
就可以抓出備份空間成長速度、推估需要多大的磁碟空間
找了一些工具,結果發現 durep 這個 ubuntu 內建的工具
基本上可以滿足我的需求

筆記- ubuntu 18.04 上好用的screen capture 軟體 flameshot

flameshot

flameshot 官方網站

之前在 windows 底下,有個非常好用的螢幕擷取軟體叫做 shareX
結合了螢幕擷取、錄影、擷取後編輯(上浮水印/馬賽克)、上傳免費空間、生成短網址的功能
可以說是最棒的螢幕擷取軟體,對,沒錯,就是最棒的,其他沒一個能打的!
opensource、portable、還可以整合一堆workflow,真的是史上最強了!
把特!人生就是這個把特啊!

自從換到Linux平台工作後,sharex就不能使用了(泣
本來一直在癡癡的等待看有沒有高手可以幫忙移植到linux平台來
可惜的是一直沒等到…
工作上又開始會用到這種軟體了,本來屈就於 kazam (錄影) / 內建的screenshot 工具
但是用起來真的就是很不順手!

直到找到了這個軟體 - flameshot
可以作到我想要的功能

按下快速鍵–>選擇要擷取的畫面–>編輯擷取的圖片–>上傳到免費空間
雖然還沒辦法作到加入浮水印、生成短網址
不過已經是很好用的軟體了

這個是官網上的介紹圖片

編輯功能還有點陽春,可以用的功能不多(但也已經是夠用的狀態)
作者也有在看github上的討論,有問題可以盡量提

不過還是希望shareX能夠移植到linux平台來
整合度還是比較高的,尤其是螢幕錄影、自動加入浮水印、生成短網址的功能
真的是非常好用!
另外 flameshot 在ubuntu 14.04/16.04上安裝會比較困難
直到 ubuntu 18.04 ,加入官方的repository ,可以用 apt 直接安裝了
安裝就一行指令

1
sudo apt isntall flameshot

然後可以到ubuntu 的系統設定值,去設定快捷鍵,執行指令用

1
flameshot gui

我是設定在 ctrl+1,所以要截圖的時候,我就按下ctrl+1 ,就會叫出flameshot的gui
操作畫面

目前來說,暫時沒有其他更好的解決方案了
不過還是希望shareX能夠移植到Linux上啊!(到底是有多愛shareX!)

筆記- ubuntu 18.04 系統狀態監控工具 librenms

LibreNMS

LibreNMS 官方網站

過去用過許多不同類型的伺服器狀態監測的系統,NAGIOS/NMS/MRTG/PRTG/CACTI/Smokeping
不得不說,前面幾種的界面設計很明顯已經「過時」,只有Smokeping 勉強算得上 「fancy」
現在的系統,已經不只是功能要能符合需求,UI/Report也要能夠「入眼」,才是個真正好的系統!

最近正好因為現在公司之前建立好的NMS發生一些問題,也跟主管討論怎樣改善這種狀況
<!– more –!>

上網找了一些 opensource 的系統,很多都還是那種比較「老派」的界面設計!
拜託!工程師也是人好嗎?時代在改變,「審美觀」自然也會跟著改變
15年前也許我會覺得 cacti 超炫! 15年後再看cacti我只能說超遜!

直到我看到 LibreNMS !
設定簡單、畫面簡潔美觀,而且有docker file 可以直接執行!真的是太美好了!

二話不說,馬上下載docker-compose版本回來測試
setiseta/docker-librenms on github

下載回來之後,簡單修改一下docker-compose.yml 就可以跑了,docker就是這麼方便啊!
我的docker-compose.yml如下
基本上我只修改了 PASSWORD 和 timezone 還有要開的port而已
不過不知為何,改這邊的timezone似乎沒有作用,這個還要再研究

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
version: '3'

services:
mysql:
image: mariadb
container_name: librenms-db
volumes:
- ./mysql:/var/lib/mysql
- ./50-server.cnf:/etc/mysql/mariadb.conf.d/50-server.cnf:ro
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=librenms
restart: always

librenms:
build: .
image: seti/librenms
container_name: librenms
hostname: librenms
volumes:
- ./data:/data
- /etc/timezone:/etc/timzone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- 8002:80
- 514:514/tcp
- 514:514/udp
depends_on:
- mysql
environment:
- DB_TYPE=mysql
- DB_HOST=mysql
- DB_NAME=librenms
- DB_USER=root
- DB_PASS=password
- TZ="Asia/Taipei"
- POLLER=24
- SERVICES_ENABLED=1
- UPDATE_CHANNEL=master

改完之後,直接執行 docker-compose up -d
可能這個系統比較大一點,啟動要跑比較多東西,所以要跑一下子
可以用docker ps -a / docker logs librenms 檢查狀態
不然就放個十分鐘,總是可以跑起來的 XD
登入之後,先測試加入一些已經開放SNMP的設備,可以很順利的抓到
再放個半小時一小時的,就可以看到圖表上開始出現數據了
Mail Server 運行狀況

LibreNMS 圖表

再來這個是我覺得很有用的網路連接狀況
甚至會把帶哪個VLAN去哪個裝置都列出來
非常的方便!
網路連接狀況

寄信給google被退信 錯誤 550-5.7.1的解法

參考

https://blog.longwin.com.tw/2007/07/google_apps_localhost_mail_problem_2007/

狀況

不知道什麼上週什麼時候開始,寄給google G Suite帳號的信件都會被退信。
退信訊息如下

1
2
3
4
5
6
<ya@km.com>: host aspmx.l.google.com[108.177.125.26] said:
550-5.7.1 [123.123.123.123] The IP you're using to send mail is not
authorized to 550-5.7.1 send email directly to our servers. Please use the
SMTP relay at your 550-5.7.1 service provider instead. Learn more at 550
5.7.1 https://support.google.com/mail/?p=NotAuthorizedError
a12-v6si21249839pgv.296 - gsmtp (in reply to end of DATA command)

單單看退信的內容,就是google把我伺服器的IP列為不受歡迎的黑名單,不能直接寄信給google
可是說也奇怪,本來是可以的啊?
而且,一開始只有寄給G suite帳號的信件會被退,寄給 gmail.com不會(但是會被列入垃圾信件)
所以覺得很納悶,猜想大概是因為google對商業用戶比較保護,所以用了比較嚴格的信件過濾條件?

anyway,總之針對這個問題,google的回覆很簡單
https://i.imgur.com/ZQfWQu3.png

反正我是google我最大,不要想跟我反應什麼,我才不會鳥你..

就這樣,經過了好幾天的亂槍打鳥,試著加入了SPF、也用了google 的postmaster tools
但就是沒辦法順利解決… :<


剛剛不死心又翻了一次google,意外的讓我發現連結的那篇文章(不過用google 550-5.7.1 搜尋不到那篇)
雖然原因不太一樣,我並沒有把域名轉去google
但是想說死馬當活馬醫,就改了 /etc/postfix/main.cf的 $mydestination
把localhost移到最前面,重啟postfix service,哇靠!居然就可以了!

不過呢,我還是不知道是什麼道理就是了
因為一開始發生的原因就不太一樣了,而且就我的認知
$mydestination 是用來設定postfix要收信的網域,當收到這些域名的郵件時,會收下郵件
而如果不在這個設定內的域名的郵件,就會被丟棄
看起來就跟寄信一點關係都沒有啊!
但是的確是修改了這裡,把localhost移到最前面就可以了
真的是不知道為啥啊!

不過至少在這過程中,我順便請ISP設定的正確的反解,以及設定了SPF Record
現在看起來應該是沒有什麼其他問題了(希望啦..)

Linux 底下極其詳細的System performace Monitor Dashboard - Netdata

參考

https://www.digitalocean.com/community/tutorials/how-to-set-up-real-time-performance-monitoring-with-netdata-on-ubuntu-16-04

安裝

最後一個要注意,要安裝 netdata-all 才會安裝有DB的plugin (網路上都這樣說..)

1
curl -Ss 'https://raw.githubusercontent.com/firehol/netdata-demo-site/master/install-required-packages.sh' >/tmp/kickstart.sh && bash /tmp/kickstart.sh -i netdata-all

然後作 git clone

1
git clone https://github.com/firehol/netdata.git --depth=1 ~/netdata

接著就執行netdata提供的安裝script

1
sudo ./netdata-installer.sh

如果有少套件,就看缺什麼套件,裝上去就好了,或者一開始就先裝套件

1
sudo apt-get install zlib1g-dev uuid-dev libmnl-dev gcc make autoconf autoconf-archive autogen automake pkg-config curl

安裝完成後,預設會在 localhost:19999 運作 ,還頗炫的

每天自動更新
1
sudo ln -s /home/minion/netdata/netdata-updater.sh /etc/cron.daily/netdata-updater.sh
啟用 python.d plugin 目錄
1
sudo vim /etc/netdata/netdata.conf

找到 plugin ,取消 python.d 前面的 “#”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[plugins]
# PATH environment variable = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin
# PYTHONPATH environment variable =
# proc = yes
diskspace = yes
# cgroups = yes
# tc = yes
# idlejitter = yes
enable running new plugins = yes
check for new plugins every = 60
# fping = yes
# charts.d = yes
python.d = yes
# node.d = yes
# apps = yes

有很多東西可以設定,超細的…

修改 postgres.conf 的DB 設定
1
sudo vim /etc/netdata/python.d/postgres.conf

把不要的都註解掉,然後填入資料庫的設定
https://i.imgur.com/VQwlary.png

測試一下看能不能跑

1
sudo /usr/libexec/netdata/plugins.d/python.d.plugin debug 1 postgres

正常的話,應該會看到一些這樣的訊息
https://i.imgur.com/YMZtvdo.png

離開

重啟 netdata service,看看多到讓人眼花撩亂的圖表吧!

筆記-用find找出日期區間內的所有檔案並計算容量 find files in period and calcualte size

找出 2018/01 的信件計算所有容量,換算成 mb
1
2

find ./ -type f -newerct "1 Jan 2018" ! -newerct "31 Jan 2018" -ls|awk '{sum += $7} END {print sum/1024768}'

筆記-能夠看到進度、速度的cp tools cp tools with progress bar

gcp

1
2
3
4



pycp / pymv ```(這個看起來不錯用)

pycp on github

running pycp with progress

patch cp

patch)```
1
2
3
4



dd if=xxx of=xxx -status=progress``` (內建,不過不能複製目錄)

筆記-incron 簡介

incron 簡單介紹

incron 是一個Linux 上的小工具,可以用來監控特定目錄,當目錄內容發生變化時,可以執行自訂的script

可以監控的動作如下

incron可監控的動作

語法範例

incrontab -e (編輯)

語法 source_folder/mask(可以用多個不同動作,中間用 , 隔開)/要執行的script

/usr/share/nginx/html/hexoblog/source/_posts/ IN_MODIFY,IN_CREATE,IN_DELETE,IN_MOVE /scripts/run.sh

這行指令是說當 /usr/share/nginx/html/hexoblog/source/_posts/ 這個目錄產生變化(修改、新增、刪除、搬移)時,執行 /scripts/run.sh ,當然指令內容就看要怎麼應用。 在 /var/log/cron 裡面可以看到有沒有乖乖聽話在執行

Jul 12 04:28:17 3cx1 incrond[11814]: (root) CMD (/scripts/run.sh)
Jul 12 04:28:21 3cx1 incrond[11814]: (root) CMD (/scripts/run.sh)
Jul 12 04:28:21 3cx1 incrond[11814]: (root) CMD (/scripts/run.sh)

有點像是之前玩過的 lsyncd / inotify 的工具

目前是拿來作為自動偵測並發布Hexo Blog的「手段」,先透過win-sshfs之類的工具,mount 伺服器上的 Hexo Blog 的source/_posts目錄,然後在本地端的筆電上用Markdown editor編輯文章後,直接存在這個掛進來的目錄,然後透過 incron去自動執行hexo generate的指令,還滿方便的!

IN_ACCESS           File was accessed (read) (*)
IN_ATTRIB           Metadata changed (permissions, timestamps, extended attributes, etc.) (*)
IN_CLOSE_WRITE      File opened for writing was closed (*)
IN_CLOSE_NOWRITE    File not opened for writing was closed (*)    
IN_CREATE           File/directory created in watched directory (*)
IN_DELETE           File/directory deleted from watched directory (*)
IN_DELETE_SELF      Watched file/directory was itself deleted
IN_MODIFY           File was modified (*)
IN_MOVE_SELF        Watched file/directory was itself moved
IN_MOVED_FROM       File moved out of watched directory (*)
IN_MOVED_TO         File moved into watched directory (*)
IN_OPEN             File was opened (*)
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×