繁体   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