<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55
global $wpdb2;
global $failure;
global $file_hist;
///// echo '<H2><b>Старт загрузки</b></H2><br>';
$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
///// echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}
$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
///// echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}
/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
///// echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
///// echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist); ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7]; ////получаем размер файла
$m_mtime_file=$masiv_data_file[9]; ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file
///// echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
///// echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
///// echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);
if ($results)
{ foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));
////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
///// echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
///// echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}
////загружаем данные
$table='vin_history'; // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация // (путь от корня web-сервера)
$delim=';'; // Разделитель полей в CSV файле
$enclosed='"'; // Кавычки для содержимого полей
$escaped='\
Да ещё забыл, для неопытных. В командной строке пароль не отображается при вводе, будьте внимательны!
права какие нужны?
под учеткой любого админа от локального до админ. домена, воти все права!!!!!!
Ну Оля права! Молодец!
(3) ну так не интересно (кто-же его даст), кроме того локальный может перекрываться доменной политикой.
WMI вещь хорошая, когда на него права есть… )
Очень даже интересно не надо какой нибудь бухгалтерше Маше объяснять, что где настраивать… Сам поставил флаг, сам сделал, что надо, сам его и снял! А если учесть, что рабочее место может быть очень далеко так и вовсе интересно!
(7) Альтернатива:http://infostart.ru/profile/8089/sites/611/
Для этого скрипта достаточно как уже сказала Оля прав пользователя на локальной машине из группы администраторы. Как на клиенте так и на сервере.
Для Noy Мне знакома эта прога раньше чем появилась ссылка здесь… Хорошая!
не понял, в чем цимус? в том что не надо ручками лазить а просто скрипт запустить — и все?
Что бы полазить на удаленной р.с. туда надо сходить! Собственно со скриптом и ножками топать не надо.
(12) все равно не понял: откуда скрипт запускается? и кто его запускает?
а для рабочей группы — фунциклирует?
Che…. Скрипт запускается с любой машины если это доменная структура то под админом не обязательно домена можно потом зайти на любую машину где установили флаг. Профиль будет создан при старте сессии…В рабчих группах работает тоже, у меня так….Burashka
Все равно не понял..
> Скрипт запускается с любой машины, можно потом зайти на любую машину где установили флаг.
А как зайти на машину, чтобы запустить скрипт?
}{ оть и подозреваю ,что господин Че просто шутит (Из за хорошего расположения духа)?! Но всё же объясню! Скрипт запускается на вашей машине, а вот галочка установится на любой которую вы сами выберите… См настройки!
P.S.
Если домен то можно в командной строке выполнить последовательно
============================================================
net user «ИмяПользователя» «Пароль» /add /workstations:* /domain
net localgroup Administrators «ИмяПользователя» /add /domain
============================================================
После этого вы сможете локально под этим пользователем залогиниться на любой рабочей станции, а удалённо(В смысле RDP) вам поможет скрипт! Если развернута AD то с соответствующими разрешениями это могут проделать и другие пользователи.
Тоже самое сработает если вы знаете логин и пароль пользователя удаленной машины который входит в локальную группу Администраторы.
Оля в принципе правильно объяснила! Я лишь повторился…
Полезная вещь.
Автору — а что за генератор скриптов?
Для artbear. Я то пользовался «самопальным», а вот скачать от Microsoft можно здесь
http://infostart.ru/projects/2963/
=======================================================
=======================================================
Спасибо Оле!
> пользователя удаленной машины который входит в локальную группу Администраторы
Ужас какой! 😉 Не должен он входить в такие группы! 🙂
>Ужас какой! 😉 Не должен он входить в такие группы! 🙂
должен или нет решается индивидуально
Доржи, вот тебе «глючок». Этот мой коммент №21 начинается с новой страницы, при этом предыдущая (первая) в данном случае недоступна вообще. Т.е я даже скопипастить для ответа ничего не могу
>Идет бета-тестирование портала, не удивляйтесь, если что-то не изменяется, не удаляется, не сохраняется.
Обо всех найденных ошибках пишите…
Так что терпение Abadonna
(22) Спасибо за совет 😉 Демонам торопиться некуда, у нас впереди вечность 😉
Почему после ввода имени и пароля программа закрывается?
А что ещё? Выполнен скрипт чего же более? А если серьёзно то запустите через cmd и тогда увидите возвращённое значение… Ноль например:)
недавно столкнулся с необходимостью попасть на рабочий стол на домашнем компе (индивидуального ip нет). Поставил программу TeamViewer (для одного пользователя бесплатна), теперь без проблем захожу, причем если дома кто-то за компом сидит, он не отключается, а видит все мои действия. Удобно, если кого-либо надо наглядно по удаленке обучить, и одновременно по скайпу или телефону комментировать…
(26)TeamViewer штука хороша но платная (ограничение по времени работает и как знать сколько времени работать в месяц прийдется)
Хотя идея автора хорошая и оригинальная. Спасибо так держать. Огромное спасибо