📂

smbclientの基本的な操作方法

2024/12/12に公開

はじめに

smbclientの基本的な操作方法と、よく使うコマンド、主なエラーについてまとめたものです。
smbclientについて馴染みがない方を対象に記載しています。

動作確認環境

接続

接続先IPアドレス:192.168.1.101, 共有フォルダ: share, ユーザ名:user,パスワード: passwordの場合

smbclient //192.168.1.101/share -U user%password

パスワードをパラメータに含めない場合

-Uから%passwordを削除します。

smbclient //192.168.1.101/share -U user

共有フォルダ内の任意のディレクトリを初期ディレクトリに設定する場合

-D [ディレクトリ名]を指定します。

smbclient //192.168.1.101/share -D path/to/dir -U user%password

共有フォルダの確認

smbclient -L 192.168.1.101 -U user%password

移動・参照

ディレクトリ移動(cd)

cdはサーバ上のカレントディレクトリを変更します。

  • path/to/dirに移動する場合
    cd "path\to\dir"
    

実行後に出力される文字列

  • OK:なし
  • エラー:
    cd 指定したディレクトリ: エラー文字列
    
    存在しないディレクトリを指定した場合:
    cd \path\to\dir\: NT_STATUS_OBJECT_PATH_NOT_FOUND
    

非対話モード実行時のステータスコード

  • 0:OK
  • 1:エラー

ファイル・ディレクトリ一覧表示(dir)

dirは、カレントディレクトリの一覧を表示します。

  • path/to/dirの一覧を表示
    dir "path\to\dir\*"
    

実行後に出力される文字列

  • OK:
    ファイル名 属性を示す文字 ファイルサイズ(バイト) 最終更新日時
    
    出力例
      .                                   D        0  Tue Oct 10 18:07:15 2023
      ..                                  D        0  Sat Dec 29 23:37:19 2007
      MIRACLELINUX-8.6-rtm-x86_64.iso      A 11364466688  Wed Nov 16 10:57:20 2022
      MIRACLELINUX-8.8-rtm-x86_64.iso      A 12540968960  Tue Oct 10 15:24:11 2023
    
    		961149212 blocks of size 1024. 38242560 blocks available
    
  • エラー:
    エラー文字列 listing 指定したディレクトリの共有フォルダからのフルパス
    
    存在しないディレクトリを指定した場合
    smb: \> dir path
    NT_STATUS_NO_SUCH_FILE listing \path
    

非対話モード実行時のステータスコード

  • 0:OK
  • 1:エラー

ダウンロード

ファイルのダウンロード(get)

getは、サーバ上のファイルをダウンロードします。

  • コマンドとオプションの指定方法
    get <remote file name> [local file name]
    
  • OS\Linux\ML8\MIRACLELINUX-8.8-rtm-x86_64.isoをダウンロード
    get "OS\Linux\ML8\MIRACLELINUX-8.8-rtm-x86_64.iso"
    
  • OS\Linux\ML8\MIRACLELINUX-8.8-rtm-x86_64.isoml8.8.isoとしてダウンロード
    get "OS\Linux\ML8\MIRACLELINUX-8.8-rtm-x86_64.iso" "ml8.8.iso"
    

実行後に出力される文字列

  • OK:
    ファイル名 属性を示す文字 ファイルサイズ(バイト) 最終更新日時
    
    出力例
    getting file \OS\Linux\ML8\MIRACLELINUX-8.8-rtm-x86_64.iso of size 12540968960 as ml8.8.iso (52906.2 KiloBytes/sec) (average 52906.2 KiloBytes/sec)
    
  • エラー:
    エラー文字列 opening remote file 指定したディレクトリの共有フォルダからのフルパス
    
    存在しないファイルを指定した場合
    smb: \> get hoge.txt
    NT_STATUS_OBJECT_NAME_NOT_FOUND opening remote file \hoge.txt
    

指定した条件に一致するファイルをダウンロード(mget)

  • コマンドとオプションの指定方法
    mget <mask>
    
  • OS\Linux\ML8\MIRACLELINUX-8.から始まるファイルを全てダウンロード
    mget "OS\Linux\ML8\MIRACLELINUX-8.*"
    
  • recurse コマンドを事前に実行することで、サブディレクトリ内のファイルもダウンロードできます。
  • OS\Linux\ML8ディレクトリ内のファイルを全てダウンロード
    recurse
    mget "OS\Linux\ML8"
    
  • ファイルのダウンロード前に、ファイル名の確認を求めない。
    promptコマンドを実行することで、ファイル名の確認を求めないように設定できます。
    recurseと合わせて使うことで、ディレクトリを確認せずにすべてダウンロードできます。
    prompt
    recurse
    mget "OS\Linux\ML8"
    

アップロード

ファイルのアップロード(put)

  • コマンドとオプションの指定方法
    put <local file name> [remote file name]
    
  • ml8.8.isoをアップロード
    put "ml8.8.iso"
    
  • ml8.8.isoOS\Linux\ML8\MIRACLELINUX-8.8-rtm-x86_64.isoとしてアップロード
    put "ml8.8.iso" "OS\Linux\ML8\MIRACLELINUX-8.8-rtm-x86_64.iso"
    

指定した条件に一致するファイルをアップロード(mput)

  • コマンドとオプションの指定方法
    mput <mask>
    
  • OS\Linux\ML8\MIRACLELINUX-8.から始まるファイルを全てアップロード
    mput "OS\Linux\ML8\MIRACLELINUX-8.*"
    
  • recurse コマンドを事前に実行することで、サブディレクトリ内のファイルもアップロードできます。
    • OS\Linux\ML8ディレクトリ内のファイルを全てアップロード
      recurse
      mput "OS\Linux\ML8"
      
    • ファイルのアップロード前にファイル名の確認を求めない。
      promptコマンドを実行することで、ファイル名の確認を求めないように設定できます。
      recurseと合わせて使うことで、ディレクトリを確認せずにすべてアップロードできます。
      prompt
      recurse
      mput "OS\Linux\ML8"
      

ディレクトリ作成、ファイル削除

ディレクトリの作成(mkdir)(md)

mkkdir,mdは、サーバ上にディレクトリを作成します。

  • コマンドとオプションの指定方法
    mkdir <directory name>
    
  • shareディレクトリを作成
    mkdir "share"
    
  • エラー:
    既に存在するディレクトリを指定した場合
    smb: \> mkdir share
    NT_STATUS_OBJECT_NAME_COLLISION creating directory share
    

ファイルの削除(del)

  • コマンドとオプションの指定方法
    del <remote file name>
    
  • OS\Linux\ML8\MIRACLELINUX-8.8-rtm-x86_64.isoを削除
    del "OS\Linux\ML8\MIRACLELINUX-8.8-rtm-x86_64.iso"
    

条件に一致したファイルやディレクトリの削除(deltree)

  • コマンドとオプションの指定方法
    deltree <mask>
    
  • OS\Linux\ML8\ディレクトリ内のファイルを全て削除
    deltree "OS\Linux\ML8"
    

参考資料

  • man smbclient (samba 4.15.5)

Discussion