| Роль | Где | Действия |
|---|---|---|
| Клод | сервер | пишет скрипты в beget-s3/dl/, читает результаты из beget-s3/up/ |
| Коннектор | ПК kt | смотрит локальный ~/SERVER/dataspace/dl/ (sshfs), запускает скрипты, пишет результаты в up/ |
ПК kt Сервер / beget-s3
─────────────────────────────────────────────────────────────
[1] Пользователь запускает коннектор:
bash <(curl -s http://91.218.142.168/files/connector.sh)
[2] Клод кладёт задачу:
/mnt/beget-s3/dl/task.sh
[3] Файл мгновенно появляется на ПК (sshfs):
~/SERVER/dataspace/dl/task.sh
[4] Коннектор каждые 15 сек (таймаут скрипта 120с, простой 120 опросов = 30 мин):
ls ~/SERVER/dataspace/dl/*.sh
→ видит task.sh
→ bash task.sh ← выполняет локально
→ результат → ~/SERVER/dataspace/up/TIMESTAMP_task.log
→ rm ~/SERVER/dataspace/dl/task.sh ← удаляет (через sshfs)
[5] Клод проверяет beget-s3/up/:
→ видит TIMESTAMP_task.log → читает результат
→ кладёт следующую задачу: /mnt/beget-s3/dl/task2.sh
[6] → повторяется с шага [3]
~/SERVER/dataspace/dl/ (sshfs)beget-s3/up/ — имя: YYYYMMDD_HHMMSS_taskname.logbeget-s3/up/ в цикле# 1. Положить задачу
cat > /mnt/beget-s3/dl/task.sh << 'EOF'
#!/bin/bash
# команды на ПК
EOF
# 2. Ждать результат (до 100 сек)
for i in $(seq 1 20); do
RESULT=$(ls /mnt/beget-s3/up/*task* 2>/dev/null)
if [ -n "$RESULT" ]; then
cat "$RESULT"
break
fi
sleep 5
done
| Папка на сервере | Папка на ПК | Метод | Направление | Назначение |
|---|---|---|---|---|
beget-s3/dl/ |
~/SERVER/dataspace/dl/ |
sshfs | сервер→ПК | задачи для ПК |
beget-s3/up/ |
~/SERVER/dataspace/up/ |
sshfs | ПК→сервер | результаты с ПК |
Если ~/SERVER/dataspace/dl/ не смонтирован, коннектор автоматически переключается на SSH:
primary: ls ~/SERVER/dataspace/dl/*.sh ← sshfs
fallback: ssh ls /mnt/beget-s3/dl/*.sh ← SSH