使用 smbclient 將檔案從 Linux 推送到 Windows 時出現問題

使用 smbclient 將檔案從 Linux 推送到 Windows 時出現問題

我的 linux 機器上有一個由 python 腳本產生的文件,該文件被放置在 /root/ 目錄中

我的 bash 腳本如下:

#!/bin/bash
# Run the HR Data feed
cd /root/hr-feed
# the file created here will land one directory above the scripts in /root/
python main.py     

# Transfer the file to the server
cd /root/
smbclient \\\\[SERVER]\\[SHARE] --workgroup=[WRKGRP] --user=[USR] [PASS] -c 'put HRDataFeed.txt'

直到最後一行一切都如預期運作。它執行時一定有錯誤(儘管我不太確定如何找出該錯誤可能是什麼)。

該作業是從 crontab 執行的。據我了解,它的運作環境與 root 略有不同(或至少看起來它的行為方式不同)。

如果我直接執行腳本(而不是從 crontab),它會順利運行,並且檔案會傳輸到目標 Windows 伺服器框。我的猜測是,也許我需要提供 HRDataFeed.txt 檔案的完整路徑作為 put 命令的一部分;然而,我似乎無法弄清楚這一點。

smbclient .... -c "put /root/HRDataFeed.txt"

導致文件出現錯誤/root/HRDataFeed.txt找不到。

任何意見都將受到高度讚賞。

編輯

我嘗試更新我的 crontab 來讀取(為了測試,我讓它每分鐘運行一次)

          • /root/hrdatafeed > last_run.txt

然而,文件中似乎沒有任何內容。

我將嘗試直接將管道新增至 SMBClient 命令。

答案1

/usr/bin/sendmail當命令失敗時,Cron 嘗試發送郵件(使用)——這是我所知道的獲取腳本實際輸出的唯一方法(您可以安裝sSMTP使這個工作相當容易)。 cron 環境中的主要區別通常是$PATH,因此請嘗試PATH在 crontab 中設定適當的值,其中包括所在目錄smbclient

答案2

我最終稍微重寫了腳本,如下所示:

#!/bin/bash
# Run the HR Data feed
cd /root/hr-feed
python main.py

# Transfer the file to the server
cd /root/
/usr/bin/smbclient \\\\[SERVER]\\HRDataFeed --workgroup=[WRKGRP] --user=[USR] [PASS] -c 'put HRDataFeed.txt'

我將我的 crontab 更改為:

          • sh /root/hrdatafeed.sh > /root/last_run > 2>&1

終於能夠在上次運行的文件中獲得一些有意義的消息。雖然沒有錯誤,但我認為這是因為我更改了設定 smbclient 命令的完整路徑。

感謝您為解決此問題提供的所有協助。

當然,現在我將更新 cron 選項卡以降低運行頻率;)

相關內容