日前把一台有800G HD的linux server 在不停機的狀態下p2v轉到proxmox
記錄一下流程
linux server雖然不停機但是在轉換過程中資料不能有異動
1. 在原server上使用sshfs把proxmox的目錄mount進來
modprobe fuse
sshfs root@10.0.0.1:/mnt/data /mnt/10
2. 使用dd把原server的HD完整複制成一個raw檔
dd if=/dev/cciss/c0d0 of=/mnt/10/www.raw bs=1M
^^^^^^^
這個參數一定要加 加快速度
3. 在proxmox上新開的vm hd要指定為ide 格式為raw
否則開机時會出現kernel panic 無法開機
再來把www.raw更名為已開vm的檔名
4. guest os 要修正 /etc/udev/rules.d/70-persistent-net.rules 網卡編號
視需要修正crontab
在/etc/rc.local加上開机對時
修正後reboot
注意備份路徑
加上proxmox備分
5. 舊机器shutdown
2016/11/24
在linux shell中常常會需要判斷某個檔案內是否有特定字串
或是某個指令執行有沒有成功
視情況以進行接下來的處理
之前都是用grep把結果導到/tmp
再用test去判斷檔案是否存在
其實也可以用$?來判斷
$?是shell中一個特別的變數
如果上一個指令成功則為0
反之則為1
範例如下
grep error file
[ $? == 0 ] && echo "not ok"
假設file 內有error這個字串
則印出 not ok
http://c.biancheng.net/cpp/view/2739.html
或是某個指令執行有沒有成功
視情況以進行接下來的處理
之前都是用grep把結果導到/tmp
再用test去判斷檔案是否存在
其實也可以用$?來判斷
$?是shell中一個特別的變數
如果上一個指令成功則為0
反之則為1
範例如下
grep error file
[ $? == 0 ] && echo "not ok"
假設file 內有error這個字串
則印出 not ok
http://c.biancheng.net/cpp/view/2739.html
2016/11/21
因為有個單位是使用自行申請的ADSL
近來每天都打電話來說網路被鎖
在想說要不要寫個程式在user開机時把ip傳來同時在黑名單把ip刪掉
先找了一些資料
找出目前使用的ip
curl icanhazip.com
curl ipv4.icanhazip.com
wget -qO- icanhazip.com
在批次檔中使用ftp傳檔
ftp -s:upload.txt
upload.txt內容
open ftp.server.com
user@server.com
userpwd
prompt
cd ftp_upload
mput test.txt
bye
使用python拿到ip並寄出
import urllib2,smtplib,sys
response = urllib2.urlopen('http://icanhazip.com/')
html = response.read()
print html
sender = "test_from_hinet@hinet.net"
receipt = "abc@de.com"
smtp = smtplib.SMTP("168.95.4.10")
header = "Subject: ip \r\n\r\n"
msg = html
smtp.sendmail(sender, receipt, header+msg)
smtp.quit()
http://neochung.com/2015/01/pc/batch-file/windows%E4%B8%AD%E4%BD%BF%E7%94%A8%E6%89%B9%E6%AC%A1%E6%AA%94-bat-%E4%B8%8A%E5%82%B3ftp%E6%AA%94%E6%A1%88/
http://askubuntu.com/questions/95910/command-for-determining-my-public-ip
近來每天都打電話來說網路被鎖
在想說要不要寫個程式在user開机時把ip傳來同時在黑名單把ip刪掉
先找了一些資料
找出目前使用的ip
curl icanhazip.com
curl ipv4.icanhazip.com
wget -qO- icanhazip.com
在批次檔中使用ftp傳檔
ftp -s:upload.txt
upload.txt內容
open ftp.server.com
user@server.com
userpwd
prompt
cd ftp_upload
mput test.txt
bye
使用python拿到ip並寄出
import urllib2,smtplib,sys
response = urllib2.urlopen('http://icanhazip.com/')
html = response.read()
print html
sender = "test_from_hinet@hinet.net"
receipt = "abc@de.com"
smtp = smtplib.SMTP("168.95.4.10")
header = "Subject: ip \r\n\r\n"
msg = html
smtp.sendmail(sender, receipt, header+msg)
smtp.quit()
http://neochung.com/2015/01/pc/batch-file/windows%E4%B8%AD%E4%BD%BF%E7%94%A8%E6%89%B9%E6%AC%A1%E6%AA%94-bat-%E4%B8%8A%E5%82%B3ftp%E6%AA%94%E6%A1%88/
http://askubuntu.com/questions/95910/command-for-determining-my-public-ip
2016/11/10
之前找到一個滿精簡又好用的web mail rainloop
只是每次更新都要再重新設定一次
做一下記錄
把捉回來的zip 解壓到 /var/www/rainloop/
cd /var/www/rainloop/
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chown -R www-data:www-data .
再來進到管理介面進行設定
For example: http://webmail.domain.com/?admin
Default login is "admin", password is "12345".
把預設的google domain取消
http://www.rainloop.net/
只是每次更新都要再重新設定一次
做一下記錄
把捉回來的zip 解壓到 /var/www/rainloop/
cd /var/www/rainloop/
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chown -R www-data:www-data .
再來進到管理介面進行設定
For example: http://webmail.domain.com/?admin
Default login is "admin", password is "12345".
首先更改admin的密碼
再來把常使用的domain設上去把預設的google domain取消
http://www.rainloop.net/
2016/11/08
根据資安要求
每半年要執行一次弱掃
已經改用openvas好几年了
但每次只要更新 就不能用
所以打算直接用 kali linux
把vm下載回來後
調整一下cpu ram及usb
直接boot就可以用了
預設的帳號密碼是 root toor
不管是lite 或完整版預設都沒有裝openvps
要手動安裝 建議下載lite 檔案比較小
apt update
apt install openvas
裝完後執行openvas initial setup 如下圖
完成時系統會自動給一組密碼
再來打開firefox
https://127.0.0.1:9392
登入的帳號為admin
密碼是之前系統給的那組
記得要馬上改掉
目前碰到的問題是只要apt upgrade 整個os 更新
openvas就一定會掛點
所以不建議整個os更新
或是要用時再去捉一次vm回來
另外要掃瞄之前要更新特徵碼
可以從網頁上執行 但看不到進度
或直接下指令
openvas-feed-update
openvas-certdata-sync
openvas-nvt-sync
openvas-scapdata-sync
每半年要執行一次弱掃
已經改用openvas好几年了
但每次只要更新 就不能用
所以打算直接用 kali linux
把vm下載回來後
調整一下cpu ram及usb
直接boot就可以用了
預設的帳號密碼是 root toor
不管是lite 或完整版預設都沒有裝openvps
要手動安裝 建議下載lite 檔案比較小
apt update
apt install openvas
裝完後執行openvas initial setup 如下圖
完成時系統會自動給一組密碼
再來打開firefox
https://127.0.0.1:9392
登入的帳號為admin
密碼是之前系統給的那組
記得要馬上改掉
目前碰到的問題是只要apt upgrade 整個os 更新
openvas就一定會掛點
所以不建議整個os更新
或是要用時再去捉一次vm回來
另外要掃瞄之前要更新特徵碼
可以從網頁上執行 但看不到進度
或直接下指令
openvas-feed-update
openvas-certdata-sync
openvas-nvt-sync
openvas-scapdata-sync
2016/11/07
2016/10/27
在proxmox上裝完win10後發現一個問題
每次關機後開機一定要開二次
第一次一定會不正常關机
找了一下資料
發現應該是 Fast startup的問題
而且win10預設Fast startup 就是on
把她off後就正常了
https://www.reddit.com/r/Windows10/comments/3ixg13/windows_10_longer_boot_times_and_having_to_boot/
http://www.tenforums.com/tutorials/4189-fast-startup-turn-off-windows-10-a.html
每次關機後開機一定要開二次
第一次一定會不正常關机
找了一下資料
發現應該是 Fast startup的問題
而且win10預設Fast startup 就是on
把她off後就正常了
https://www.reddit.com/r/Windows10/comments/3ixg13/windows_10_longer_boot_times_and_having_to_boot/
http://www.tenforums.com/tutorials/4189-fast-startup-turn-off-windows-10-a.html
2016/10/08
為了安全
愈來愈多的網站都改用https的傳輸方式了
Let`s Encrypt提供了一個方便 自動而且免費的方式來達成這個需求
certbot幫助管理者方便的佈署
只要選擇使用的web server及os
就有完整的安裝方式
https://certbot.eff.org/
https://letsencrypt.org/
愈來愈多的網站都改用https的傳輸方式了
Let`s Encrypt提供了一個方便 自動而且免費的方式來達成這個需求
certbot幫助管理者方便的佈署
只要選擇使用的web server及os
就有完整的安裝方式
https://certbot.eff.org/
https://letsencrypt.org/
2016/10/04
之前不久proxmox上的backup出現問題
看了一下log
出現以下的訊息
Sep 13 00:01:57 proxmox78 kernel: [571754.499445] hpsa 0000:05:00.0: scsi 2:1:0:0: resetting logical Direct-Access HP LOGICAL VOLUME RAID-5 SSDSmartPathCap- En- Exp=1
Sep 13 00:02:08 proxmox78 kernel: [571766.276361] hpsa 0000:05:00.0: scsi 2:1:0:0: reset logical completed successfully Direct-Access HP LOGICAL VOLUME RAID-5 SSDSmartPathCap- En- Exp=1
Sep 13 00:05:57 proxmox78 kernel: [571994.368353] hpsa 0000:05:00.0: scsi 2:1:0:0: resetting logical Direct-Access HP LOGICAL VOLUME RAID-5 SSDSmartPathCap- En- Exp=1
Sep 13 00:06:09 proxmox78 kernel: [572007.128671] hpsa 0000:05:00.0: scsi 2:1:0:0: reset logical completed successfully Direct-Access HP LOGICAL VOLUME RAID-5 SSDSmartPathCap- En- Exp=1
再進到ilo去看後
發現以下的狀況
有HD出現smart error了
但面版上並沒有出現異常
也還是可以用
本想說應該不是出現reset的原因
但沒几天
另一台也出現同樣的問題
因為已經過保
也不打算修理
於是把其中一台關掉
把沒問題的HD拿到另一台試看看
到目前已經三週
沒有再出現問題
打電話去HP
HP回覆因為机器已經過保 無法回答問題
真是想罵人
看了一下log
出現以下的訊息
Sep 13 00:01:57 proxmox78 kernel: [571754.499445] hpsa 0000:05:00.0: scsi 2:1:0:0: resetting logical Direct-Access HP LOGICAL VOLUME RAID-5 SSDSmartPathCap- En- Exp=1
Sep 13 00:02:08 proxmox78 kernel: [571766.276361] hpsa 0000:05:00.0: scsi 2:1:0:0: reset logical completed successfully Direct-Access HP LOGICAL VOLUME RAID-5 SSDSmartPathCap- En- Exp=1
Sep 13 00:05:57 proxmox78 kernel: [571994.368353] hpsa 0000:05:00.0: scsi 2:1:0:0: resetting logical Direct-Access HP LOGICAL VOLUME RAID-5 SSDSmartPathCap- En- Exp=1
Sep 13 00:06:09 proxmox78 kernel: [572007.128671] hpsa 0000:05:00.0: scsi 2:1:0:0: reset logical completed successfully Direct-Access HP LOGICAL VOLUME RAID-5 SSDSmartPathCap- En- Exp=1
再進到ilo去看後
發現以下的狀況
有HD出現smart error了
但面版上並沒有出現異常
也還是可以用
本想說應該不是出現reset的原因
但沒几天
另一台也出現同樣的問題
因為已經過保
也不打算修理
於是把其中一台關掉
把沒問題的HD拿到另一台試看看
到目前已經三週
沒有再出現問題
打電話去HP
HP回覆因為机器已經過保 無法回答問題
真是想罵人
2016/08/12
一直以來在shell中都比較習慣使用cut來切割字串
但在log裡總是會碰到一個問題
就是在月份的單日會多一個空格
此時cut就會有問題
導致程式出狀況
awk就不會有這個問題
ex:
Aug 7 03:30:11 mail snmpd[2067]: Connection from UDP
Aug 12 08:30:10 mail snmpd[2067]: Connection from UDP
用cut和awk就會出現不同的結果
如下
cat ex |cut -d ' ' -f 3
7
08:30:10
cat ex |awk '{print $3}'
03:30:11
08:30:10
因此在取空格時 建議使用awk 比較不會有因空格造成的問題
2016/07/23
在某些情況下table內只能有一筆唯一的資料存在
而此時在insert時一般會先select看看存不存在
mysql提供了一個方便的語法
mysql INSERT ... ON DUPLICATE KEY UPDATE (新增或是更新一行完成)
必要條件:
1. 資料表中必須有 PRIMARY或UNIQUE的索引。
2. INSERT時須帶入1. 欄位的資料
SQL語法範例
INSERT INTO `gamePlayer` (`pNode`, `gsn`,`out`, `monster`, `club3`, `changecolor`) VALUES ('K',4, 100, -1, 0, 1) ON DUPLICATE KEY UPDATE `out`=100, `monster`=-1, `club3`=0, `changecolor`=1
http://note.tc.edu.tw/765.html
而此時在insert時一般會先select看看存不存在
mysql提供了一個方便的語法
mysql INSERT ... ON DUPLICATE KEY UPDATE (新增或是更新一行完成)
必要條件:
1. 資料表中必須有 PRIMARY或UNIQUE的索引。
2. INSERT時須帶入1. 欄位的資料
SQL語法範例
INSERT INTO `gamePlayer` (`pNode`, `gsn`,`out`, `monster`, `club3`, `changecolor`) VALUES ('K',4, 100, -1, 0, 1) ON DUPLICATE KEY UPDATE `out`=100, `monster`=-1, `club3`=0, `changecolor`=1
http://note.tc.edu.tw/765.html
2016/07/18
2016/07/14
今天重新安裝proxmox 4.2版
可是裝完後發現之前版本會有的
/dev/mapper/pve-data 3856 808 3046 8% /var/lib/vz
不見了
到forum上去找 才發現 4.2的架構已經不同了
變成直接使用LVM來放image及ct
而不再把該lvm mkfs後再mout來用
因此必須手動把這個storage加上去
步驟
Datacenter -> Storage -> Add -> LVM-Thin
所以不建議用原机升級的方式來升到4.2
reinstall是比較好的方法
https://forum.proxmox.com/threads/dev-pve-data-not-mounted-after-fresh-4-2-install.27220/
用了LVM-Thin後有几個情況
雖然LXC可以在不用停机的情況下使用LVM的snapshot功能備份
但在不同node要migrate時 proxmox是使用dd來操作
導致效能非常的差 而且沒有百分比的顯示
評估過後
因為目前不使用LXC而且以後使用的机率也不大
所以再改回來使用目錄
步驟如下
lvremove /dev/pve/data
lvcreate -L 4M -n data pve
lvcreate -l 100%FREE -n datastore pve
mkfs.xfs /dev/pve/datastore
And mount it on your /etc/fstab
/dev/pve/datastore /mnt/datastore xfs defaults 0 0
可是裝完後發現之前版本會有的
/dev/mapper/pve-data 3856 808 3046 8% /var/lib/vz
不見了
到forum上去找 才發現 4.2的架構已經不同了
變成直接使用LVM來放image及ct
而不再把該lvm mkfs後再mout來用
因此必須手動把這個storage加上去
步驟
Datacenter -> Storage -> Add -> LVM-Thin
所以不建議用原机升級的方式來升到4.2
reinstall是比較好的方法
https://forum.proxmox.com/threads/dev-pve-data-not-mounted-after-fresh-4-2-install.27220/
用了LVM-Thin後有几個情況
雖然LXC可以在不用停机的情況下使用LVM的snapshot功能備份
但在不同node要migrate時 proxmox是使用dd來操作
導致效能非常的差 而且沒有百分比的顯示
評估過後
因為目前不使用LXC而且以後使用的机率也不大
所以再改回來使用目錄
步驟如下
lvremove /dev/pve/data
lvcreate -L 4M -n data pve
lvcreate -l 100%FREE -n datastore pve
mkfs.xfs /dev/pve/datastore
And mount it on your /etc/fstab
/dev/pve/datastore /mnt/datastore xfs defaults 0 0
2016/07/06
2016/07/05
原本一直以來都是使用flow-tools來收netflow的資料
http://freecode.com/projects/flow-tools
flow-capture
但最近的工作需要收集從fortiget傳來的netflow的資料
一開始也是使用flow-capture
但一直沒有資料
用tcpdump去看
是有資料進來的
但查了一些文件才知道fortiget送過來的是netflow v9
flow-capture不支援
於是改用nfdump 支援 v5 v7 v9
資料就正常收取了
http://nfdump.sourceforge.net/
nfcapd
http://freecode.com/projects/flow-tools
flow-capture
但最近的工作需要收集從fortiget傳來的netflow的資料
一開始也是使用flow-capture
但一直沒有資料
用tcpdump去看
是有資料進來的
但查了一些文件才知道fortiget送過來的是netflow v9
flow-capture不支援
於是改用nfdump 支援 v5 v7 v9
資料就正常收取了
http://nfdump.sourceforge.net/
nfcapd
2016/06/27
最近的新增需求是要起一個ftp server
可是不想要用vsftp或其他daemon
所以直接使用pyftpdlib
還滿方便的 有很多範例可以直接套用
但用了後發現沒有log功能
再查了一下資料
發現只要加紅色二行就搞定了
import logging
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer
from pyftpdlib.authorizers import DummyAuthorizer
authorizer = DummyAuthorizer()
authorizer.add_user('user', '12345', '.', perm='elradfmwM')
handler = FTPHandler
handler.authorizer = authorizer
logging.basicConfig(filename='/var/log/pyftpd.log', level=logging.INFO)
server = FTPServer(('', 2121), handler)
server.serve_forever()
2016/06/18
在python中撈取mysql的資料
在cursor.execute後可以用cursor.fetchone()及cursor.fetchall()
如果回傳的只有一筆資料 可以使用cursor.fetchone() 可以少一點code
語法
cursor.execute(select count(*) from table)
result = cursor.fetchone()
print result[0]
如果回傳的資料有很多 則使用cursor.fetchall()
語法
cursor.execute(select * from table)
result = cursor.fetchall()
if result:
for record in result:
print record[0]
在cursor.execute後可以用cursor.fetchone()及cursor.fetchall()
如果回傳的只有一筆資料 可以使用cursor.fetchone() 可以少一點code
語法
cursor.execute(select count(*) from table)
result = cursor.fetchone()
print result[0]
如果回傳的資料有很多 則使用cursor.fetchall()
語法
cursor.execute(select * from table)
result = cursor.fetchall()
if result:
for record in result:
print record[0]
2016/06/17
今天找了一下有關mysql 日期時間的使用
大約記一下
分為
NOW() 2001-02-02 19:00:46
CURDATE() 2001-02-02
CURTIME() 19:00:46
使用加減功能
NOW() - INTERVAL 1 DAY 結果 2001-02-01 19:00:46
CURDATE()+ INTERVAL 1 DAY 結果 2001-02-03 00:00:00
未來 > NOW() < 過去
select * from table where enddate > NOW() 表示在NOW()之後的時間 表示未來 大未來
select * from table where enddate < NOW() 表示在NOW()之前的時間 表示過去 小過去
http://wen198599.pixnet.net/blog/post/22450019-mysql%E6%97%A5%E6%9C%9F%E5%92%8C%E6%99%82%E9%96%93%E5%87%BD%E6%95%B8%E4%B8%8D%E6%B1%82%E4%BA%BA
http://www.webasp.net/article/25/24538.htm
http://www.w3school.com.cn/sql/func_now.asp
http://www.mysqltutorial.org/mysql-now/
大約記一下
分為
NOW() 2001-02-02 19:00:46
CURDATE() 2001-02-02
CURTIME() 19:00:46
使用加減功能
NOW() - INTERVAL 1 DAY 結果 2001-02-01 19:00:46
CURDATE()
未來 > NOW() < 過去
select * from table where enddate > NOW() 表示在NOW()之後的時間 表示未來 大未來
select * from table where enddate < NOW() 表示在NOW()之前的時間 表示過去 小過去
http://wen198599.pixnet.net/blog/post/22450019-mysql%E6%97%A5%E6%9C%9F%E5%92%8C%E6%99%82%E9%96%93%E5%87%BD%E6%95%B8%E4%B8%8D%E6%B1%82%E4%BA%BA
http://www.webasp.net/article/25/24538.htm
http://www.w3school.com.cn/sql/func_now.asp
http://www.mysqltutorial.org/mysql-now/
訂閱:
文章 (Atom)




