Shell 用于检查写入是否在 SCP 之前完成的脚本

Shell Script to check if writing has finished before SCP

我正在 Solaris 上编写一个 shell 脚本来检查远程主机上的文件是否在传输到本地主机之前完成写入。我做了一个骨架,但有些部分我不确定该怎么做。我读了一些检查文件大小的命令,它是 stat -c %s LogFiles.txt 但我不确定如何在远程主机中检查它。

# Get File Size on Remote Host
INITIALSIZE = 

sleep 5

# Get File Size on Remote Host Again

LATESTSIZE = 


#Loop 5 times
for i in {1..5}
do
    if [ "$INITIALSIZE" -ne "$LATESTSIZE"]
    then 
        sleep 5
        # Get File Size on Remote Host
    LATESTSIZE=
    else 
        scp -P 22 $id@$ip:$srcpath/\*.txt $destpath 
        break
done

假设您对 'done' 的测量是 "file size constant for 5 sec",您可以简单地使用 ssh,如下所示:

ssh user@remote.machine "command to execute"

这可以在本地机器上通过管道传输或设置为变量,例如在你的情况下:

latestsize=$( ssh user@remote.machine "<sizedeterminer> <file>" )

无密码登录当然会跳过askpass问题。请参阅 this manual or an example here.

中的第 3.3 点