簡體   English   中英

我想在scp連接結束時運行bash腳本

[英]I want to run a bash script when an scp connection ends

我正在構建一個接受scp連接的服務器,然后添加剛剛傳輸到git存儲庫的文件。 我已經測試了.bash_logout腳本,並且在scpd會話結束時它不會執行。 當scpd退出時,我可以使用另一個鈎子來運行腳本嗎?

或者,我可以在.bashrc文件中使用at(1)命令來執行完成工作的腳本,比如5分鍾后。 我想,但我不確定,我不必擔心比賽,因為我認為這些文件很少會出現。

謝謝

如果scp總是復制到同一個地方,那么這種方法可行。 它有額外的好處,通過桑巴,CIFS等復制...也將工作。

此外,您可以從當時的nohup中生成inotifywait shell腳本,以便在shell退出后執行。 另一種方法是在啟動時啟動進程以使用inotifywait監視目錄並使用它添加到git。

當然,您可以簡單地設置一個git服務器,但我認為有一個很好的理由是不可取的。

inotifywait

inotifywait可以在更改目錄時觸發。

它可以等待目錄中的更改,添加和移動

  if inotifywait -e modify -e move -e create -r somedirectory ; then
   #  wait wile more activity occurs, up to 30 seconds
   while inotifywait -e modify -e move -e create -t 30 -r somedirectory ; do echo "waiting" ; done
   # do git add with the new files in somedirectory

   # delete the files from somedirectory

 fi

您可以將此腳本作為cronjob運行:

#!/bin/sh
targetdir="whereever your files are going"
[ "$targetdir" -nt "~/flag" ] && your_script.sh
touch ~/flag

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM