speedtest cli с cron и датой

Вопрос или проблема

Я хотел бы, чтобы cron-задача запускалась каждый час для speedtest cli и логировала результаты в CSV файл с временем и датой (https://www.speedtest.net/apps/cli). Таким образом, я могу запустить это следующим образом:

0 * * * * speedtest -p no -f csv >> /home/almalinux/speedtest.csv

Как я могу вставить вывод команды “date” в качестве первого столбца (записи) для каждого speedtest?

Согласно ответу ниже. Рабочая команда выглядит так. И она работает из терминала:

0 * * * * (printf "%s," "$(date)"; speedtest -p no -f csv) >> /home/almalinux/speedtest.csv

Но не работает из CRON.

Самый простой способ, который я знаю, выглядит так:

0 * * * * (printf "%s," "$(date)"; speedtest -p no -f csv) >> /home/almalinux/speedtest.csv

Команда printf будет выводить дату в виде строки, за которой следует , (если это ваш разделитель), и затем результат speedtest

cron интерпретирует свои команды с помощью sh, поэтому простой способ такой:

В crontab


0 * * * * /home/almalinux/bin/myscript

А в `$HOME/bin/myscript`:

#!/bin/bash
(printf "%s," "$(date)"; speedtest -p no -f csv) >> /home/almalinux/speedtest.csv
exit 0

Ответ или решение

Вопрос о создании cron-задачи для запуска speedtest CLI каждый час и записи результатов в CSV файл с датой и временем корректный. Давайте рассмотрим, как можно реализовать эту задачу, чтобы она работала как ожидается.

1. Создание скрипта

Для начала, вы можете создать отдельный скрипт, который будет выполнять команды. Это упростит управление вашей задачей cron и позволит избежать путаницы с интерпретаторами.

Шаги:

  1. Создайте файл скрипта, например, myscript.sh в каталоге /home/almalinux/bin/:
nano /home/almalinux/bin/myscript.sh
  1. Вставьте в файл следующий код:
#!/bin/bash

# Записываем текущую дату и время в виде строки
printf "%s," "$(date)" >> /home/almalinux/speedtest.csv

# Выполняем команду speedtest и добавляем ее результат в CSV файл
speedtest -p no -f csv >> /home/almalinux/speedtest.csv

exit 0
  1. Дайте скрипту права на выполнение:
chmod +x /home/almalinux/bin/myscript.sh

2. Настройка cron-задачи

Теперь, когда у нас есть готовый скрипт, мы можем настроить cron-задачу для его выполнения каждый час.

  1. Откройте crontab для редактирования:
crontab -e
  1. Добавьте следующую строку, чтобы запустить ваш скрипт каждый час:
0 * * * * /home/almalinux/bin/myscript.sh

3. Проверка работы

Чтобы убедиться, что ваш скрипт работает корректно, вы можете:

  1. Ждать час и проверить лог файл /home/almalinux/speedtest.csv.
  2. Или выполнить скрипт вручную, чтобы быстро убедиться, что он работает:
/home/almalinux/bin/myscript.sh

4. Примечания

  • Убедитесь, что у вас установлен speedtest CLI и он доступен для выполнения из вашего скрипта.
  • Проверьте права доступа к папке и файлу, чтобы убедиться, что cron может записывать в speedtest.csv.
  • Вы также можете добавить проверку на ошибки в скрипте для лучшего отслеживания возможных проблем.

Следуя этим инструкциям, вы сможете успешно настроить cron-задачу для регулярного мониторинга скорости интернета и сохранения этих данных в CSV файл с текущей датой и временем.

Оцените материал
Добавить комментарий

Капча загружается...