2017年4月19日 星期三

SSH與VirtualBox的錯誤紀錄

近期某個雲端伺服器要連線時回傳Write failed: Broken pipe

方法一:如果您有多台服务器,不想在每台服务器上设置,只需在客户端的 ~/.ssh/ 文件夹中添加 config 文件,并添加下面的配置:
ServerAliveInterval 60
方法二:如果您有多个人管理服务器,不想在每个客户端进行设置,只需在服务器的 /etc/ssh/sshd_config 中添加如下的配置:
ClientAliveInterval 60
方法三:如果您只想让当前的 ssh 保持连接,可以使用以下的命令:
$ ssh -o ServerAliveInterval=60 user@sshserver

恩恩...因為伺服器在雲端,曾經發生改了防火牆或SSH就再也失聯的窘境,所以就下次小心別遺忘伺服器太久沒去關心,放大絕重開機解決無法連線的問題,還好有規劃Load Balance環境!! 有驚無險地排除~~

另一個狀況是,VM做了快照之後~重開機完顯示cannot be closed because it is still attached to 1 virtual machines ... 
解決方式

1. 先卸載 vdi
代碼: [選擇]
$ VBoxManage storageattach $VM --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium none
2. 關閉 vdi
代碼: [選擇]
$ VBoxManage closemedium disk /path_to/xxx.vdi
$ VBoxManage showhdinfo /path_to/xxx.vdi
UUID:                 08bdda17-96f9-4363-a9bb-0807686fd0a8
Accessible:           yes
Logical size:         122880 MBytes
Current size on disk: 43279 MBytes
Type:                 normal (base)
Storage format:       VDI
Format variant:       dynamic default
Location:             /path_to/xxx.vdi
Accessible 狀態 yes


3. 重新掛載 vdi
代碼: [選擇]
$ VBoxManage storageattach $VM --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium /path_to/xxx.vdi
4. 啟動 vm
代碼: [選擇]
$ VBoxHeadless -s $VM &
恩恩...認真的依據提示做了一輪,還是GG沒有FIX。依舊是放大絕去改XXX.vbox檔案~把異常的部分砍掉再重開機解決順利開機,不過這部分之前曾經有過許多血淚經驗,沒把握別去動.vbox設定檔,最低限度記得備份原始檔,以免還原時找不到下手處。

2017年4月14日 星期五

wildcard 的 apache 與 DNS Srv 設定

*.domainName.xxx 的設定首次看到愣了一下,在DNS伺服器設定後去Ping結果都得不到回應,近日才發現誤會了它,做個MEMO...

DNS Srv setting

vim /etc/bind/db.domainName.xxx  中新增DomainName與IP的對應設定
*.domain.Name.xxx.  IN  a   10.0.0.1
最後重啟服務後,去ping OOO.domainName.xxx若有回應則表示完成,最後就是等待24小時生效。

Apache Srv setting

vim /etc/httpd/conf/httpd.conf 中於Virtual host設定中加入
ServerAlias *.domainName.xxx

服務重啟後,於網址列輸入https://OOO.domainName.xxx/ 有回應的話則表示設定正確。

2017年4月7日 星期五

Apache 中設定SSL及申請使用免費的SSL教學註記



  1. 輸入網址:OOO.net

3. 選擇手動模式
 
     4. 將檔案下載並放置網站更目錄,點選驗證的URL確認讀取的到。



      5. 下載取得相關的SSL檔案

  1. 安裝Apache SSL模組
    yum install mod_ssl
  2. 修改Apache設定
Vim /etc/httpd/conf/httpd.conf
紅色為新增置Apache Server的設定,完成後請重啟服務。
NameVirtualHost *:443

<VirtualHost *:80>
  DocumentRoot /var/www/html/XXX/
  ServerName hrm.tibtrade.net
  ErrorLog logs/dummy-XXX.net-error_log
  CustomLog logs/dummy-XXX.net-access_log common
  RewriteEngine on
  RewriteCond %{SERVER_PORT} !^443$
  RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
</VirtualHost>

<VirtualHost *:443>
   DocumentRoot "/var/www/html/XXX"
  ServerName hrm.tibtrade.net
  SSLEngine on
  SSLCertificateFile /etc/httpd/ssl/xxx.crt
  SSLCertificateKeyFile /etc/httpd/ssl/xxx.key
  SSLCACertificateFile /etc/httpd/ssl/ca-xxx.crt
</VirtualHost>

2017年3月24日 星期五

工商服務: 攤友APP 體驗分享

APP Store有個免費的APP,傳說中免費的最貴...恩恩...繼續看下去

安裝好APP後,一開啟會先要求簽到/打卡開工,看來是要求需要裝置是處於線上狀態才能使用,非離線可用軟件對於沒買吃到飽的偶來說小小雞肋。


快速的建立些商品訂定價格,這部分還挺簡單易用的算加分吧。
隱藏技:常駐在商品上拖曳可以改變排序。


統計報表與銷售紀錄來看,銷售單、銷售商品清單、餅圖...大致需要的都有了,沒啥好挑骨頭的。



後記: 隔一天後開啟APP,結果銷售紀錄清空嚕 =.= 這...只有一天好活的資料。後來看到如果個人資料註冊了email後,隔天會收到前一天的銷售報表EXCEL檔案,取得小小安慰一下。

評價:
很簡單直白的軟體,已CP值來算因為免費所以分母是 0 結果就是無限大。

可是使用中若是離線就無法結帳;
銷售單只存一天得在去處理每日報表檔才能核算周、月...等業績還是卡麻煩;
打卡? 要幹嘛呢?? 敬請期待就是了吧???


2017年3月23日 星期四

Asterisk check file exist example

之前透過 system() 來判斷,結果若單一資料夾內有多個符合條件的檔案則不回覆success造成誤判,其實system()的回覆狀態success也只是表示執行成功。

節錄:
FAILURE Could not execute the specified command
SUCCESS Specified command successfully executed
APPERROR Triggered for example when you try to delete a file but the file was not there.
NOTE - not documented, but can also return APPERROR
NOTE - I don't seem to be able to create a situation when FAILURE will be returned. 
※當然他在已知具體檔名的狀態下,確實能有判斷檔案是否存在的功用在。

之前的寫法...
exten => _99888,1,System(test -e /tmp/*87${EXTEN:3:3}*.call)
exten => _99888,n,NoOp(${SYSTEMSTATUS})
exten => _99888,n,GotoIf($["${SYSTEMSTATUS}" = "SUCCESS"]?start:end)

現在的寫法...

exten => _99888,1,Set(result=${SHELL(ls -rt /tmp/*87${EXTEN:2:3}*.call | head -1)})
exten => _99888,n,NoOp(${result})
exten => _99888,n,GotoIf($["${result}" = ""]?end:start)

若是有檔案存在result會存有檔案路徑,所以判斷是否為空值就可以了。

補充說明...
SYSTEM() 跟 SHELL()都有其方便的地方,看所需的功能用哪個比較不會出錯即可。