Mount

mount cifs:如何從終端檢索命令執行的狀態?

  • February 4, 2022

以下mount cifs程式碼工作正常:

sudo mount -t cifs //192.168.1.77/something /mnt/192.168.1.77/something \
          -o username=alpha,rw,uid=alpha,gid=tango,dir_mode=0770,file_mode=0770,nounix,sec=ntlmssp

通過在終端中執行的 shell 腳本出現一個新行:

� Password for alpha@//192.168.1.77/something:

如果密碼正確,則終端不會寫入/放置/顯示任何內容,並且目錄已按預期掛載。但是如果密碼不正確,它會顯示

mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) and kernel log messages (dmesg)

我想創建一個循環迭代始終 while: 如果終端中出現任何錯誤消息以再次執行命令並因此要求輸入密碼。當然,如果密碼正確並且mount cifs返回的內容表明一切正常,則必須停止循環。

如何做到這一點?我試過命令替換

result=$(sudo mount -t cifs //192.168.1.77/something /mnt/192.168.1.77/something \
          -o username=alpha,rw,uid=alpha,gid=tango,dir_mode=0770,file_mode=0770,nounix,sec=ntlmssp)
echo "result: '${result}'" 

並發生以下情況:

# Valid password scenario
� Password for alpha@//192.168.1.77/something:
result: ''

# Invalid password scenario
� Password for alpha@//192.168.1.77/something:
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) and kernel log messages (dmesg)
result: ''

即使使用命令替換,您也無法看到預期的效果。結果變數總是為空。

不確定是否存在mount cifs該啟用的參數返回一些東西然後讓結果變數顯示一些東西

為什麼不只測試$?它應該包含 mount 的退出程式碼,在這種情況下應該是 13 或 0 如果成功。

如果您想要一條錯誤消息,請執行errno $?,儘管您可能必須errno從某個軟體包進行安裝。

引用自:https://unix.stackexchange.com/questions/689287