С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
kukush
0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 4
1

Создать Web-интерфейс для управления CRON задачами.

14.02.2014, 15:22. Просмотров 1766. Ответов 1
Метки нет (Все метки)

добрый день.
есть задача создавать задания для компьютера через web-интерфейс.
нашел подобную статью http://ruseller.com/lessons.php?rub=37&id=1153
хочу сделать как обычной подобное cpanel на любом хостинге.
два поля:
1. - время
2. - команда
кнопка - сохранить.
Жамкаем на кнопку "сохранить", на компьютер в cron добавляется задание от пользователя.
помогите с написанием php что б выполнить подобную штуку.
пробовал по статье, не получается ни в какую.

Добавлено через 22 часа 43 минуты
два файла соответственно root.php и index.php
при нажатии на кнопку ничего не происходит
мне кажется, что проблема в function exec()

есть у кого мысли


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?php
Class Ssh2_crontab_manager {
 
                        private $connection;
                        private $path;
                        private $handle;
                        private $cron_file;
    
    function __construct($host=NULL, $port=NULL, $username=NULL, $password=NULL)
    {
        $path_length    = strrpos(__FILE__, "/");
        $this->path      = substr(__FILE__, 0, $path_length) . '/';
        $this->handle    = 'crontab.txt';
        $this->cron_file = "{$this->path}{$this->handle}";
        try
            {
                if (is_null($host) || is_null($port) || is_null($username) || is_null($password)) throw new Exception("Please specify the host, port, username and password!");
                $this->connection = @ssh2_connect($host, $port);
                if ( ! $this->connection) throw new Exception("The SSH2 connection could not be established.");
                $authentication = @ssh2_auth_password($this->connection, $username, $password);
                if ( ! $authentication) throw new Exception("Could not authenticate '{$username}' using password: '{$password}'.");
            }
        catch (Exception $e)
        {
            $this->error_message($e->getMessage());
        }
    }
 
    public function exec()
        {
            $argument_count = func_num_args();
        try
        {
            if ( ! $argument_count) throw new Exception("There is nothing to execute, no arguments specified.");
            $arguments = func_get_args();
            $command_string = ($argument_count > 1) ? implode(" && ", $arguments) : $arguments[0];
            $stream = @ssh2_exec($this->connection, $command_string);
            if ( ! $stream) throw new Exception("Unable to execute the specified commands: {$command_string}");
        }
        catch
        {
            $this->error_message($e->getMessage());
        }
        return $this;
    }
    
    public function write_to_file($path=NULL, $handle=NULL)
    {
        if ( ! $this->crontab_file_exists())
        {
            $this->handle = (is_null($handle)) ? $this->handle : $handle;
            $this->path   = (is_null($path))   ? $this->path   : $path;
            $this->cron_file = "{$this->path}{$this->handle}";
            $init_cron = "crontab -l > {$this->cron_file} && [ -f {$this->cron_file} ] || > {$this->cron_file}";
            $this->exec($init_cron);
        }
        return $this;
    }
 
    public function remove_file()
    {
        if ($this->crontab_file_exists()) $this->exec("rm {$this->cron_file}");
        return $this;
    }
    
    public function append_cronjob($cron_jobs=NULL)
    {
        if (is_null($cron_jobs)) $this->error_message("Nothing to append!  Please specify a cron job or an array of cron jobs.");
        $append_cronfile = "echo '";                    
        $append_cronfile .= (is_array($cron_jobs)) ? implode("\n", $cron_jobs) : $cron_jobs;
        $append_cronfile .= "'  >> {$this->cron_file}";
        $install_cron = "crontab {$this->cron_file}";
        $this->write_to_file()->exec($append_cronfile, $install_cron)->remove_file();
        return $this;
    }
    
    public function remove_cronjob($cron_jobs=NULL)
    {
        if (is_null($cron_jobs)) $this->error_message("Nothing to remove!  Please specify a cron job or an array of cron jobs.");
        $this->write_to_file();
        $cron_array = file($this->cron_file, FILE_IGNORE_NEW_LINES);
        if (empty($cron_array)) $this->error_message("Nothing to remove!  The cronTab is already empty.");
        $original_count = count($cron_array);
        if (is_array($cron_jobs))
        {
            foreach ($cron_jobs as $cron_regex) $cron_array = preg_grep($cron_regex, $cron_array, PREG_GREP_INVERT);
        }
        else
        {
            $cron_array = preg_grep($cron_jobs, $cron_array, PREG_GREP_INVERT);
        }           
        return ($original_count === count($cron_array)) ? $this->remove_file() : $this->remove_crontab()->append_cronjob($cron_array);
    }
    
    public function remove_crontab()
    {
        $this->exec("crontab -r")->remove_file();
        return $this;
    }
    
    private function crontab_file_exists()
    {
            return file_exists($this->cron_file);
    }
 
 
    private function error_message($error)
    {
        die("<pre style='color:#EE2711'>ERROR: {$error}</pre>");
    }
    
}
?>
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<html>
<head>
<title>test</title>
</head>
<body>
 
<?php
include "root.php";
 
<?php if(isset($_POST['add_cron'])) 
{ 
    $crontab = new Ssh2_crontab_manager('192.168.*.*', '22', 'username', 'password');
    $crontab->append_cronjob('30 8 * * 6 home/path/to/command/the_command.sh >/dev/null 2>&1');
} 
?>
 
?>
 
<h2>Add Cron Job</h2>
<form method="post" action="<?php $_SERVER['REQUEST_URI']; ?>">
<b>IP adress:</b><br>
<input type="text" name="ip" size="20" placeholder="192.168.*.*"><br>
<b>Port:</b><br>
<input type="text" name="port" size="5" placeholder="22"><br>
<b>User:</b><br>
<input type="text" name="users" size="20" placeholder="Users"><br>
<b>Password:</b><br>
<input type="text" name="pass" size="20" placeholder="Password"><br>
<b>Add New Cron Job:</b><br>
<input type="text" name="add_cron" size="100" placeholder="e.g.: * * * * * /usr/local/bin/php -q /home/username/public_html/my_cron.php"><br>
<input type="submit"><br>
</form>
</body>
</html>
Добавлено через 52 секунды
еще нашел ссылку в тему, но тоже не работает
https://github.com/MediovskiTechnology/php-crontab-manager
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2014, 15:22
Ответы с готовыми решениями:

Веб интерфейс для Cron
Добрый день друзья программисты! Хочу сделать веб интерфейс для крона, не...

Кто знает систему управления задачами?
Кто знает систему управления задачами ( для багов). Описание: Тестеры видят...

Web-интерфейс для почты и файлов
Господа помогите пожалуйста найти web-интерфейсы для управления почтой и...

Создать задачу Cron в PHP скрипте
Здравствуйте. Вобщем обстоятельства такие, что некий мониторинг при...

Web интерфейс почты
Всем добрый день. есть идея создать одноразовую почту. планирую почтовый...

1
kukush
0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 4
19.02.2014, 16:16  [ТС] 2
проблема решена через ssh2.
как установить - http://applejack.name/ssh2_for_php_howto/
после установки пользуемся - ssh2_connect, ssh2_exec и т.д.
описание - http://applejack.name/ssh2_for_php_howto/
возникнут проблемы пишите
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2014, 16:16

Создать класс в скрипте, запущеном через cron
Всем привет. В скрипте есть ошибка - класс не найден. Дело в том, что он лежит...

Создать программный модуль для web-сайта
Не знаю тут создал тему или нет)) ну мне нужен совет ребят у меня тема на...

Web-интерфейс + расчеты в excel
Уважаемые знатоки! Для 50 пользователей нужна форма ввода данных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru