通过感知文件运行的shell脚本

时间:2010-02-02 08:53:12

标签: unix shell scripting

我正在研究unix。 我想编写一个shell脚本,它将检查Windows上名为“temp_file.txt”的文件 然后执行一些命令。 这有可能吗?

我们如何连接到Windows并转到特定目录并检查文件?

4 个答案:

答案 0 :(得分:2)

使用“常规”Windows文件共享工具在Windows计算机上共享目录。在Linux方面,您有两个选择:

  1. 使用smbclient连接到Windows计算机并检查文件是否存在或

  2. 使用smbmount将共享目录挂载到Linux文件系统中,并使用“标准”Linux命令(例如test)检查文件是否存在。

  3. 具体的实现细节将取决于您使用的脚本语言,但您的伪代码将如下所示:

    loop:
        check if file exists
        if yes: do something useful
        sleep for some reasonable time
    

    (我假设您要在Linux计算机上执行命令。)

答案 1 :(得分:1)

如果您正在使用Linux(您指定使用的是Unix,而不是使用的是什么版本),请查看inotify API ---这将允许您为文件系统事件设置事件响应程序(比投票更有效率。)

从shell脚本中,您可以使用inofitywait命令---有关详细信息,请参阅http://linux.die.net/man/1/inotifywait

答案 2 :(得分:0)

您可以在Windows上设置SSH,然后使用SSH客户端在Unix上编写脚本以连接到Windows并执行命令。另一种选择,如果你能负担得起,它可以编写Windows批处理,并在Windows上执行命令。或者您可以打开Windows终端服务,并使用Unix的telnet协议发出命令。支持telnet的编程语言包括Perl(Net::Telnet)和Python(telnetlib

答案 3 :(得分:0)

正如ghostdog74所说,ssh是你最好的选择。你可以运行类似的东西(我假设你安装了Cygwin或SFU)

ssh "[ -e $file ] && do_something.sh" > do_something.log

如果您的命令登录到stdout,您也可以在Linux机器上登录。

如果您设置私钥验证,它会变得更好。