2020年12月18日 星期五

習慣用vi編輯設定檔

Ubuntu 20.4上用vi編輯檔案,

按了 i 之後方向鍵無法移動游標,變成輸入 A B C D 還按一次換一行

查了google才知道,vi / vim預設使用 h j k l 為方向鍵(這樣手不用離開主要輸入區域)

想"改用"方向鍵必須修改設定檔

內文中還有老鳥預測到下個問題就是 "backspace為什麼不會動?"

(按了 i 之後,backspace不會把前一個字吃掉)

(事實上它有,只是沒用空格把顯示出來的那個字蓋掉)

一樣可以用設定檔改成你習慣的樣子


所以

root@yourhost: ~# vi ~/.vimrc

set nocompatible

set backspace=2

:wq


不用重開,直接有效

遠端連線MariaDB失敗 ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 2

Server A安裝MariaDB完成,試著從host B連看看

root@hostB:~# mysql -h 192.168.1.100

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 2

這甚麼意思?

上google查


可能性1: 連線被擋了,要在/etc/hosts.allow加入mysqld: 192.168.1.0/255.255.255.0: allow

各種格式都試過,完全沒效(後來確定相關功能在我的Ubuntu 20根本沒啟動)


可能性2: 連線有問題timeout掉了(某個中國老兄的文到處被複製,感覺是在瞎扯)

建議connect_timeout=5改成60 (可是我是第0秒就被斷線)

試過加在/etc/mysql/mariadb.conf.d/50-server.cnf裡,無效

試過在Server A進mysql內set global connect_timeout=60;,無效


我知道這不是防火牆的問題,但還是去確認了,真的不是

後來,我從Windows去telnet 192.168.1.100 3306

看到這個訊息Host '192.168.1.123' is not allowed to connect to this MariaDB server

確認連線其實有進去,只是被MariaDB server踢掉了

簡單查了一下,老外很多網站寫得清清楚楚

是帳號根本沒開外網的問題

(用telnet連線還沒試著登入就被擋了。帳號跟不接受連線的關聯其實我不明白)

馬上動手建帳號

MariaDB [(none)]> create user 'root'@'192.168.1.*' identified by 'thisispassword';

MariaDB [(none)]> grant all on *.* to 'root'@'192.168.1.*' with grant option;

MariaDB [(none)]> flush privileges;

再測一次,搞定!


好吧,太久沒摸MySQL/MariaDB或是我從來就不懂這東西

總之被回應的訊息內容誤導方向,浪費太多時間

希望這篇記錄能幫大家一點小忙

2019年1月1日 星期二

openmediavault 4.1.3首次開機失敗 /dev/sde1 does not exist. Dropping to a shell!

將openmediavault安裝至SSD完成,拔除USB碟重新開機

失敗!!!

現象1: 出現大量且重複的錯誤訊息
   mdadm: No arrays found in config file or automatically

現象2: 出現找不到開機分割區的訊息,進入BusyBox v1.22.1(initramfs)
   ALERT! /dev/sde1 does not exist. Dropping to a shell!

查google大致確認,第1項不是開機失敗的原因,先跳過


重點處裡第2個現象

forum上有人提供簡便解法,照做即可
https://forum.openmediavault.org/index.php/Thread/22879-Unable-to-boot-after-installation-Dropping-to-a-shell/?postID=175158#post175158

問題背景簡述: 
安裝至SSD當時,分割區是/dev/sde1,安裝程式也照著寫入Grub設定
開機碟移除後,分割區往前提變成/dev/sdd1,Grub找不到了...
(這問題感覺上是太扯了,但我沒有探究原因)

請注意:
以下/dev/sde1改成/dev/sdd1是我的實際環境
進行前請找出你電腦內正確磁碟代號
如果真的不會,可以試著把/dev/sdXy這個X字母往前一格,y不能變
例如上面現象2的訊息是ALERT! /dev/sdc1....
你就找 /dev/sdc1 然後改成 /dev/sdb1 (c之前是b這不會算錯吧...)


1.重新開機(按Ctrl+Alt+Del)
2.進入GRUB開機選單時,按ESC取消倒數
3.選取預設的開機項目,按e編輯開機參數
4.找到/dev/sde1,改成/dev/sdd1
5.按F10重新開機
6.這次openmediavault應該可成功開機(PC喇叭會發出聲音)
7.登入系統
8.vi /boot/grub/grub.cfg,將所有/dev/sde1改成/dev/sdd1
9.儲存重新開機

成功!

openmediavault 4.1.3出現大量錯誤訊息 rrdcached plugin: Failed to connect to RRDCacheD...

安裝完openmediavault 4.1.3 amd64版
發現/var/log/syslog不斷重複湧出錯誤訊息

collectd[3588]: rrdcached plugin: Failed to connect to RRDCacheD at unix:/var/run/rrdcached.sock: Unable to connect to rrdcached: No such file or directory (status=2)

試了forum.openmediavault.org討論區內大部分的建議無效

偶然發現下面這篇,照做終於搞定
原文: https://forum.openmediavault.org/index.php/Thread/21693-rrdcached-plugin-error/

解法提供者racoonsn發現,手動跑rrdcached可正常執行
/usr/bin/rrdcached -B -F -f 3600 -w 900 -b /var/lib/rrdcached/db/ -j /var/lib/rrdcached/journal/ -p /var/run/rrdcached.pid -l unix:/var/run/rrdcached.sock
(我對照過 /etc/default/rrdcached內容完全一樣)

懷疑是/etc/init.d/rrdcached內有甚麼地方寫錯了(本項無結論)

(略)
總之,實測成功的解法如下:

先確認 /sbin/ 內有兩個script
(make sure these two files exist)
   /sbin/start-stop-daemon
   /sbin/start-stop-daemon.REAL
其中,可正常執行的是第二個(.REAL),因此
(we want system to execute the one with extension .REAL so...)

step 1.把第一個備份起來(backup original script)
  mv /sbin/start-stop-daemon /sbin/start-stop-daemon.bak

step 2.把第二個更名(rename .REAL to the same name w/o extension)
  mv /sbin/start-stop-daemon.REAL /sbin/start-stop-daemon

step 3.重新開機(reboot)
  reboot

成功了!


2018年6月27日 星期三

ssh使用key(pageant)登入失敗 : Server refused our key


使用PuTTYgen,Parameter選DSA,將Key貼到/home/user/.ssh/authorized_keys內存檔

PuTTY內設定 Connection --> SSH --> Auth --> Private key file for authentication選好了private key檔案

設定完,測試PuTTY連線,失敗!!!

視窗內出現 "Server refused our key"




透過Google很快查到是SSH daemon對於key的安全性有嚴格限制

1.server上儲存key的目錄必須是700
chmod 700 /home/user/.ssh
ls -la /home/user/.ssh確認一下: rwx------

2.authorized_keys這個檔案必須是600
chmod 600 /home/user/.ssh/authorized_keys
ls -la /home/user/.ssh/確認: rw-------

重新測試,bingo!!!

2018年2月16日 星期五

[Python 3.6] pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available

venv建立新環境後,安裝套件又發生問題

[root@python newproject]# ./bin/pip3 install requestspip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.Collecting requests  Could not fetch URL https://pypi.python.org/simple/requests/: There was a problem confirming the ssl certificate: Can't connect to HTTPS URL because the SSL module is not available. - skipping  Could not find a version that satisfies the requirement requests (from versions: )No matching distribution found for requests

參考以下網站,為Python 3.6增加SSL能力(https://stackoverflow.com/questions/41489439/pip3-installs-inside-virtual-environment-with-python3-6-failing-due-to-ssl-modul)

(1) 安裝openssl套件
yum install -y openssl openssl-devel (CentOS 7.4)

(2) 修改Python編譯設定檔
cd /usr/src/Python-3.6.4
./configure
vi ./Module/Setup (uncomment below lines #209~212)

SSL=/usr/lib64/openssl
_ssl _ssl.c \
        -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
        -L$(SSL)/lib -lssl -lcrypto

make
make altinstall


[Python 3.6] Error: Command '['/home/newproject/bin/python3.6', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1


python3.6下使用venv建立新專案環境時發生錯誤:

[root@python Home]# python3.6 -m venv /home/newproject

Error: Command '['/home/newproject/bin/python3.6', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.

經搜尋,了解python3.6預設未安裝pip,且缺了ensurepip模組
(https://github.com/ContinuumIO/anaconda-issues/issues/6917)

實際執行模組確認,發生以下問題
[root@python Home]# python3.6 -m ensurepip.....(略).....
zipimport.ZipImportError: can't decompress data; zlib not available

再經過一番搜尋,
確認必須重編python3.6支援zlib解壓縮
(網路上有其他論壇寫到./configure --with-zlib-dir=... ,此參數試過不支援)
參考下方網頁Alex Zhou的作法,重新編譯
(http://zhoujianghai.iteye.com/blog/1521993):

注意:最後步驟我改為make altinstall,保留MacOS的Python2.7,

cd /usr/src/Python-3.6.4 (我的source解開後的位置)
./configurevi Modules/Setup
(找到下面這段,將註解符號去除讓它生效)
#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
make
make altinstall
完成!