-->
顯示具有 Linux 標籤的文章。 顯示所有文章
顯示具有 Linux 標籤的文章。 顯示所有文章

2020/07/24

Live USB 救援用可開機隨身碟

之前做的 ISO 都沒人用,測試了一下才知道不會自動登入,也忘記設定帳號密碼,實在蠢死了。


這次更新用 Ubuntu-Mate 20.04 來建置,應該可以支援較多的驅動程式,希望可以在急需時幫上忙。


載點:


理論上這個版本會自動登入,若沒有成功,可以使用:
  • 帳號:root
  • 密碼:toor

推薦使用 balenaEtcherUniversal USB installer 來建立開機隨身碟。

2020/06/10

MySQL 5.7 安裝以後無法用 root 登入

以往都是在安裝的時候,直接請你先填寫 root 密碼,以便安裝完畢以後直接登入。
但 MySQL 5.7 認證方式有更改,即使是 root 也沒有給你預設密碼。

新的方法要使用 OS 的 root 來登入 MySQL:
$ sudo mysql -u root
....
....
....
mysql>




建立 super user 帳號:
create user zeroplex@localhost identified by 'secret';
flush privileges;

grant all privileges on *.* to zeroplex@localhost with grant option;
flush privileges;

到這邊告一段落,之後 zeroplex@localhost 就可以使用原有的方式登入了。

2020/03/05

使用 single user mode 在 Ubuuntu 修改密碼

最近記憶有點像是 flash memory,睡個覺什麼都忘了,今天忘記的還是 root 密碼。

Linux 忘記 root 密碼是沒關係的,可以在 console 先進入單人模式以後再重新設定密碼。


第一步:進入開機選單,選「Advance」




第二步:挑其中一個 boot images 並寫按下「e」(edit)


第三步:編輯器往下找,找到一行有「linux    vmlinuz....」來做修改


找到「linux     /vmlinuz-x.x.x  ........」這行,要在這邊做修改。

要注意的事情有:

  • 要對硬碟做修改,所以要把「ro」(read-only) 改成 「rw」
  • 「init」這個參數要指向 bash,否則會使用 root shel,可以操作的選項少很多


修改後的開機參數應該會向下面這樣:





第四步:調整完畢後,按下 F10 使用新的參啟動 Ubuntu。



這樣就可以使用 root 來改密碼了:「passwd zeroplex」。


備註:若你覺得 grub 選單的停留時間太短很難操作,可以參考「延長 grub menu timeout」來修改。若是卡在 VMware 的 BIOS 開機選單太快,可以閱讀 VMware Knowledge Base 的說明,對 VMX 做修改。


2020/02/02

DIY 自製溫室 (燈架、燈座、燈泡) (1)

下篇:DIY 自製溫室 (定時、供水) (2)


標題看起來好像很厲害,不過只是拿一些小零件就可以兜出來的成品。

聽說開講都要放貓咪照片?



2020/01/31

MySQL 的 replication logs 把硬碟空間吃光

今天服務一直中斷,稿不清楚狀況,只是開 console 進機器看,沒看還好,看了嚇一跳,硬碟空間全部被吃光了。

所以先嘗試把可以清空的資料清空:
sudo apt-get autoclean
sudo apt-get clean

cd ~
rm -fr .cache/*

空出了一些空間,但是也大概只有 1 % 左右,所以用 du 掃了一下目錄狀況,發現 /var 佔用超過 10 GB 的空間,這樣目標很明顯了:Docker 或是 MySQL。


先看 Docker,的確不少已經中止不再使用的 container,直接清空:
 $docker system prune
WARNING! This will remove:
        - all stopped containers
        - all networks not used by at least one container
        - all dangling images
        - all dangling build cache
Are you sure you want to continue? [y/N] Y

du 看了一下, /var 還底下還是有一些佔空間的檔案:



找了一下和 log 有關的設定:
max-binlog-size = 128M
innodb-log-file-size = 64M

似乎都沒與此事件無關。不過看到關鍵字「binlog」,查了一下用途,是 master / client 用來同不的 log,應該是我之前抄 DK 的設定檔,抄完忘記把不需要的東西拔乾淨的關係 XD



兇手找到了就不用客氣,把 MySQL replication 的設定全部註解掉。再來登入 MySQL,使用指定把 replication log 全部清乾淨:
purge master logs before now();


2019/12/24

好兇的印表機



不知道是誰翻譯的,雖然不算完全翻譯正確,但也算是讓人輕鬆一笑。

2019/11/11

MySQL non-interactice installation

相信大家對這個畫面都不陌生:


除了 MySQL 5.7 的某幾個版本會自動產生 root 的 password 以外,大多都是在安裝時讓使用者自行輸入密碼。

但今天你不是手動安裝,而是寫 script 讓主機自行部屬,這下就麻煩了,因為你不可能每台主機都人工輸入密碼,另外像是 AWS 自動部屬的話,你大概連 console 都沒有。但若透過 debconf 是有機會做到完全自動安裝。

2019/08/23

讓 less 可以顯示 ANSI 色彩

應該不少人有經驗,在使用 grep 時,要搜尋的關鍵字會用顏色 highlight 方便閱讀,例如:
$ ls -lh | grep php
-rw-rw-r--  1 zero zero  178 Aug 22 19:15 autoload.php
drwxrwxr-x  3 zero zero 4.0K Aug 22 19:01 cakephp
drwxrwxr-x  5 zero zero 4.0K Aug 22 19:01 phpdocumentor
drwxrwxr-x  3 zero zero 4.0K Aug 22 19:01 phpoffice
drwxrwxr-x  3 zero zero 4.0K Aug 22 19:01 phpoption
drwxrwxr-x  3 zero zero 4.0K Aug 22 19:01 phpseclib
drwxrwxr-x  3 zero zero 4.0K Aug 22 19:01 phpspec
drwxrwxr-x  8 zero zero 4.0K Aug 22 19:01 phpunit

不過如果因為列表很長,在把搜尋結果 pipe 給 less 以後,顏色就消失了。

這其實是 grep 這邊會判斷 output 到哪一種型態的 I/O,像是後面接的是 bash pipe,grep 就會自動移除 ANSI color 的 syntax,畢竟不知道 pipe 資料給誰,如果後者不支援 ANSI color 就會變成亂碼。

如果很確定 pipe 後面的指令、工具支援 ANSI color 的指令,就可以下參數要求 grep 輸出顏色。例如:
$ ls -lh | grep php --color=always | less
-rw-rw-r--  1 zero zero  178 Aug 22 19:15 autoload.php
drwxrwxr-x  3 zero zero 4.0K Aug 22 19:01 cakephp
drwxrwxr-x  5 zero zero 4.0K Aug 22 19:01 phpdocumentor
drwxrwxr-x  3 zero zero 4.0K Aug 22 19:01 phpoffice
drwxrwxr-x  3 zero zero 4.0K Aug 22 19:01 phpoption
drwxrwxr-x  3 zero zero 4.0K Aug 22 19:01 phpseclib
drwxrwxr-x  3 zero zero 4.0K Aug 22 19:01 phpspec
drwxrwxr-x  8 zero zero 4.0K Aug 22 19:01 phpunit

2019/07/21

LibreOffice 加油啊

昨天鄰居想嘗試使用 Linux,大致上都沒什麼問題,但卡到二個點:

  • 輸入法:沒有順手的輸入法 (倉頡)
  • Office 文件工具組:LibreOffice 的操作實在很不直覺,從 M$ 跳到 LibreOffice 目前還沒聽過有人說好用的。

今天還是幫他改回 Windows 系統,實在可惜。

2019/07/06

給台灣人的 Raspbian 懶人版映象檔

這幾天被 Raspbian 安裝搞得七葷八素,所以乾脆把幾個常用設定改好,直接打包給大家用。


我用的是 Raspbian Buster Lite:
  • Version: June 2019
  • Release Date: 2019-06-20
  • Kernal version: 4.19


我調整過的設定 (目標是接上電源線即可遠端操作):

  • Localization
    • Locale:en_US.utf8 + zh_TW.utf8
    • 時區:Asia/Taipei
    • 鍵盤對應:en (US)
    • Wify county:TW
  • SSH 預設啟動 (port 2222)
  • 有線網路自動 DHCP
  • /etc/apt/source.list 的 source 改為 NCHC (快超多)
  • 已經做過一次 apt-get update && apt-get upgrade


載點:https://mega.nz/#F!dR5EVABL!Nkynwg5ivQuRyRqpGz1Q4A

SHA1: 71664d5651d660077621f91b29edeecf4810a486
SHA256: 981a8ded523c30f06ec09292445255c55a862e5d756b4e0fff5f8d069ef35afa

2019/05/31

Build AWS EC2 for CodeDeploy

最後更新時間:2019/05/31


文章開頭先謝謝 ellery 大大,沒有你提醒,我大概會繼續通靈 debug 幾個禮拜 XD


先說明 CodeDeploy 大概的運作機制:
  1. 先設定好 EC2 的基本權限 (IAM)
  2. 要支援 CodeDeploy 的 EC2 instance 必須安裝 CodeDeploy agent (很重要,EC2 上 trigger event 都是靠這個 agent)
  3. 設定 CodeDeploy 上 Application 對應到的 EC2 instances
  4. User 先將打包好的 code 送到 S3 上存放
  5. 接下來 trigger application 上特定的  deploy-er,將特定版本的 code 從 S3 上派送到 EC2 instance 上
  6. EC2 instance 的 CodeDeploy agent 收到 event 以後,會按照 appspec.yml 中指定的動作來動作,操作完成會回傳 status 給 CodeDeploy。
  7. CodeDeploy 會在 pannel 顯示 deploy 的進度和狀態。

TL;DR

2019/05/23

UbuntuMate 18.04 無法鎖定畫面

開機後突然沒有辦法使用快速鍵「Ctrl + Alt + L」來鎖定畫面,覺得很不對對勁。

網路上看了幾篇文章以後,發現螢幕鎖定和 gnome 的 screen saver 都有關係,由於 UbuntuMate 的預設不是使用 gnome,所以找到的是 mate-screensaver-command:
$ mate-screensaver-command -h
Usage:
  mate-screensaver-command [OPTION…]

Help Options:
  -h, --help                 Show help options

Application Options:
  --exit                     Causes the screensaver to exit gracefully
  -q, --query                Query the state of the screensaver
  -t, --time                 Query the length of time the screensaver has been active
  -l, --lock                 Tells the running screensaver process to lock the screen immediately
  -c, --cycle                If the screensaver is active then switch to another graphics demo
  -a, --activate             Turn the screensaver on (blank the screen)
  -d, --deactivate           If the screensaver is active then deactivate it (un-blank the screen)
  -p, --poke                 Poke the running screensaver to simulate user activity
  -i, --inhibit              Inhibit the screensaver from activating.  Command blocks while inhibit is active.
  -n, --application-name     The calling application that is inhibiting the screensaver
  -r, --reason               The reason for inhibiting the screensaver
  -V, --version              Version of this application


由於之前腦包把 background daemon 關掉,所以螢幕保護服務沒有啟動,不管怎麼下指令都不會有反應。記得「啟動應用程式」中,把「螢幕保護程式」開啟,以免部份功能失效:



2019/05/07

GNU grep 的 exit code 會因結果而不同

昨天寫了類似以下這樣一段 script:
#!/usr/bin/env bash

set -e

R=`ls /dev/ | grep sd`

echo "Results found:"
echo $R

照理來說,不管 grep 是有有撈到資料,至少會印出「Results found」字樣,但實際執行時卻什麼資料都沒有輸出。

後來使用「bash -xv」來執行,監視值流程,才發現 script 執行到一半就中斷了:
$ bash -xv qwe.sh 
#!/usr/bin/env bash

set -e
+ set -e

R=`ls /dev/ | grep sd`
++ ls /dev/
++ grep sd
+ R=

追蹤後發現二個結果交互影響導致 script 中斷:
  • set -e 的設定
  • grep 的 exit code


在 bash 中「set -e」代表遇到錯誤立即中斷執行;而 grep 的 exit code 比較令人意外,當 grep 有找到資料時,則 exit code 為 0 (正常結束),若 grep 都沒有找到指定的字串,則會回傳 1 (錯誤)。這二件事情同時發生,所以就導致了上面的 script 在 grep 執行後就中斷執行。


// ------



shell script 好像沒什麼 debug 的工具,不過在執行時可以透過 bash 的參數,來提供執行時的一些狀態,例如: -xv。

2019/05/03

幾個清空 docker 資料的好用指定

中斷所有正在運作的 container:
docker kill $(docker ps -q)


刪除所有已中止的 container:
docker rm $(docker ps -a -q)


刪除所有的 images:
docker rmi $(docker images -q)


節錄自:Top 10 Docker CLI commands you can’t live without

2019/02/25

Ubuntu 18.04 網路設定檔異動

在 Ubuntu 14.04 時代,網路介面的設定檔在 /etc/network/interfaces,但在 18.04 以後改用了 netplan 來做網路介面的管理,設定檔也跟著改變。

打開 /etc/network/interfaces 後,你會看到以下的說明:
# ifupdown has been replaced by netplan(5) on this system.  See
# /etc/netplan for current configuration.
# To re-enable ifupdown on this system, you can run:
#    sudo apt install ifupdown

若要修改網路設定檔,大至上要二個步驟:
確認網路介面的 ID (Ubuntu 18.04 的網路介面代號與 14.04 不同)
修改網路設定檔:/etc/netplan/50-cloud-init.yaml


確認網路介面的 ID


舊版的網路卡 ID 會是「eth0」這樣的表示,不過在 Ubuntu 18.04 代號有變動,記得先使用 ifconfig 確認:
$ ifconfig -a
ens33: flags=4163  mtu 1500
        inet 192.168.0.102  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::20c:29ff:fead:d664  prefixlen 64  scopeid 0x20
        ....


修改網路設定檔


Ubuntu 18.04 使用的 netplan 設定檔位於 /etc/netplan/*.yaml,如果是新安裝好的機器,應該可以看到「50-cloud-init.yaml」這個檔案。

開啟檔案後,可以看到以下格式的設定:
network:
    ethernets:
        ens33:
            addresses: []
            dhcp4: true
    version: 2

YAML 的檔案格式可以參考 netplan.io 的說明

假設要改成 static IP,則設定檔的大概會改成以下這個樣子:
network:
    ethernets:
        ens33:
            addresses: [192.168.0.10/24]
            gateway4: 192.168.0.1
            nameservers: 
                addresses: [8.8.8.8, 1.1.1.1]
            dhcp4: false
    version: 2

設定檔修改以後不會立即生效,需要呼叫 netplan 讀取並套用新的設定:
$ sudo netplan apply

2019/02/19

Kali Linux 2019.1 released

最新版 Kali Linux 2019.1 版釋出:

  • Linux kernel 更新至 4.19.13
  • Metasploit 更新至 v5.0

2019/02/07

Ubuntu 14.04 將停止維護



Ubuntu 14.04 將在 2019 四月後中止維護,還有機器還沒更新的記得更新。

ps. 在 terminal 中執行「do-release-upgrade」即可。

2018/12/26

jq (JSON parser) 處理含有 "-" (dash) 的 key 名稱

爬 log 剛好遇到 JSON 的其中一個 key 名稱中有「-」(dash) 符號,所以 console 怎麼寫都有錯誤訊息:
$ cat log | cut -d$'\t' -f 4 | jq   .http-post
jq: error: post/0 is not defined at , line 1:
.http-post
jq: 1 compile error

從錯誤訊息可以看到「http-post」被切斷了。

若 key name 有特殊符號,或是特殊字元,記得要用引號包起來進行查詢:
$ cat log | cut -d$'\t' -f 4 | jq '."http-post"'
{
  "action": "get",
  "name": "John",
  "category": "RD",
}

2018/10/29

clamav 掃描 Linux 上的病毒

clamav 預設會將所有掃描過的資料全部輸出到畫面,不管正常或是中毒,這個有點討厭。自己寫 script 做掉:
function clamscan() {
    clamscan -i -r $*
}

另外再寫個掃描整台電腦的 script
#!/usr/bin/env bash

DATE=`date '+%Y-%m-%d'`
LOG_PATH="/var/log/clamav"

# create log folder
mkdir -p  $LOG_PATH

clamscan -i -r /  2>&1 > "$LOG_PATH/$DATE.log"

2018/10/13

自製 Linux Live USB 救援用可開機隨身碟



用 UbuntuMate 16.04 LTS i386 (32bit) 的官方 ISO,透過 Cubic 調整了內容以後,做出來專門用來做電腦系統檢查、救援的 live USB ISO 開機隨身碟。

下載方法:

2019/01 更新:
  • 檔案:rescue-i386-2019-01.iso
  • SHA256:b522c283d25dc6d9b6503cc20832df4408e21e6bf3808b56d8725e3d1ac3838d
  • 網頁下載:by MEGA
  • BT 載點:torrent 檔


說明一下異動的內容。

先把多媒體、文書工具的軟體先清除掉,像是 LibreOffice 這類軟體佔用不少儲存空間,但在系統救援完原用不到的東西,我就先幹掉了。另外還有像是 ThunderBird、VLC 等多媒體軟體。

另外增加以下工具,供系統檢查、資料修復備援使用。


一般常用工具:

  • gzip / ungzip / pigz
  • zip / unzip
  • bzip2 / lbzip2
  • p7zip-full
  • htop
  • glances
  • iftop
  • dstat
  • lsof
  • sysstat
  • util-linux

磁碟相關:
  • smartmontools
  • dd
  • ddrescue
  • gparted
  • partimage
  • nfs-common
  • ntfs-3g
  • testdisk
  • badblocks
  • lvm
  • mdadm
  • rsync
  • pv
  • tree

網路相關:
  • traceroute
  • mtr
  • mitmproxy
  • iftop
  • tcpdump
  • nmap
  • netcat

若有常用工具被我遺漏,再麻煩留言告知。我會在下一次更新時整理上來。