2017年9月15日 星期五

分別在兩台Ubuntu電腦執行同一支shell script,有一台卻發生 Syntax error: "(" unexpected

今天在移植整個編譯Code的環境,當整個環境都移植完成後,準備試著編譯一次相同的Code,結果遇到Shell Script的error訊息,因此朝著新電腦的環境還尋找問題,錯誤大概描述如下

Shell script內容:
===============================================
#!/bin/sh
AAA=(a b c)
for i in ${AAA[@]}; do
        echo $i
done

錯誤訊息為:
line 2,   
Syntax error: "(" unexpected





這種宣告陣列變數的寫法,並不是在所有的shell底下都通用
所以一開始我先用底下指令確認安裝的shell種類,與版本
# echo $SHELL
# echo $BASH_VERSION

結果發現兩台電腦是相同的


後來查資料原來ubuntu預設的shell是使用dash而非bash,用以下指令查看了一下出現錯誤的電腦:
# ls -al /bin/sh




果然是使用dash所造成的

最後解決方法,就是手動更改/bin/sh,把他改為link到bash就可以了









2017年9月8日 星期五

解決 ssh 輸入root帳號與密碼都無法登錄的問題

最近在Device上要使用ssh登入,看了一下Device上sshd都跑在背景了,我使用putty來做ssh連線

連上線之後,要輸入帳號密碼,ssh的帳號密碼應該會跟你透過UART登入使用同樣的帳號密碼,也就是說要改密碼直接使用passwd就行

但是我使用putty透過ssh連上Device後卻一直登入不了(Access Denied)








後來找到解法,發生這種問題,必須先去修改Device上sshd的config檔,位於/etc/ssh/sshd_config,請把位於Authentication底下的PermitRootLogin 後面的值改為 yes












然後重啟Device上的sshd










完成以上步驟之後,就可以順利透過ssh登入了!!!