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 点
我正在 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 点