• Не могу понять, почему скрипт очищает весь крон, место удаления конкретной строки, как сделать правильно?

    valerium
    @valerium
    Изобретая велосипед
    Вообще да, сделано дико криво. Сначала скрипт забирает файл с сервера, потом обрабатывает его на своей стороне, потом весь же файл передаёт обратно. Не проще ли «точечно» обработать файл на стороне сервера? Есть же волшебная утилита sed!

    $connect = ssh2_connect('localhost', '22');
    ssh2_auth_password($connect, ssh_login, ssh_password);
    $stream = ssh2_exec($connect,"sed -i.back 's/* * * * * /home/jitter.sh; /usr/bin/flock -xn /tmp/$path_script.lock -c \'/usr/bin/php -q /var/www/deone/data/www/vk-manager.ru/script/grabber/$path_script >/dev/null 2>&1\'//' /var/spool/cron/crontabs/deone");
    ssh2_exec($connect, '/etc/init.d/cron restart');


    То есть потоковый редактор sed (волшебная вещь! очень советую изучить) удаляет одну строку в файле, при этом (на всякий случай) создаёт резервную копию исходного файла с суффиксом .back.

    Кстати, судя по всему, подключение идёт к рутовой записи по паролю, это совершенно несекурно. Представляете, кто-то украдёт Ваш скрипт? Заморочтесь и настройте sudo и авторизацию по ключу.

    И да, надеюсь, localhost — это просто замена для конфиденциальности?
    Ответ написан
    Комментировать