我正在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
答案 0 :(得分:0)
假设您的测量结果为&#39;是&#34;文件大小常数为5秒&#34;,您只需使用<?php
$fn = (isset($_SERVER['HTTP_X_FILENAME']) ? $_SERVER['HTTP_X_FILENAME'] : false);
if ($fn) {
file_put_contents(
'uploads/' . $fn,
file_get_contents('php://input')
);
exit;
}
else {
$files = $_FILES['fileselect'];
$uploaded['files'] = array();
foreach ($files['error'] as $id => $err) {
if ($err == UPLOAD_ERR_OK) {
$fn = $files['name'][$id];
$uploaded['files'][] = $files['name'][$id];
move_uploaded_file(
$files['tmp_name'][$id],
'uploads/' . $fn
);
}
}
header('Content-type: application/json; charset=utf-8');
echo json_encode($uploaded);
}
,如下所示:
ssh
这可以通过管道传输或设置为本地机器上的变量,例如在你的情况下:
ssh user@remote.machine "command to execute"
无密码登录当然会跳过askpass问题。请参阅this manual中的第3.3点或示例here。