イマドキ(2022/07現在) 使えるサンプルソース置いておきます。
ポートは:445
use_ntlm_v2=True
is_direct_tcp=True
がポイントだと思う。
#SMBConnection 系定数
SMBUSER = "ユーザー"
SMBPASS = "パスワード"
RMHOST = "アクセスホスト"
DOMAIN = "ドメイン"
RMADDR = "xx.xx.xx.xx"
RMPORT = 445
def main():
#SMBConnection
conn = SMBConnection(
SMBUSER,
SMBPASS,
platform.uname().node,
RMHOST,
domain=DOMAIN,
use_ntlm_v2=True,
is_direct_tcp=True)
conn.connect(RMADDR, RMPORT)
print(conn.echo('echo success'))
思考の経緯(失敗談。苦労したところ)
元々のきっかけとして、とあるファイルサーバーのファイル存在チェック的な作業をログインしたPCでPythonちょいプログラム作って実施していた。
import os.path
os.path.isfile(path)
このようなプログラムだったのだが、これを常時起動している端末のタスクスケジューラ実行で自動化したところ
SMBレベルでログインしていないと使えない
という事象に苦しむことになったのだ。
pysmbライブラリの、SMBConnectionを使えばログオフ状態で実現できそうだが
意外と情報が少ないのと、ポートや設定を試行錯誤することに至った。
現時点で使えるサンプルを公開させて頂きました。
誰かのお役に立てたら嬉しいです。