Архив рубрики: Из жизни

Сюда тащатся заметки из ЖЖшки

Вызов скрипта на python из php с передачей произвольных данных

Редко,  но бывает необходимо из скрипта на PHP, вызвать на исполнение скрипт на python с передачей неких параметров и данных.

Мне например понадобилось потому что основной код у меня на PHP,  а вот часть которая отвечает за взаимодействие с онлайн кассой Атол — на python, и переписывать эту часть на PHP нет возможности (без большого гемороя) —  заголовки драйвера Атола под Linux есть только на python (dto9fptr.py и dto9base.py — поставляются в комплекте с драйвером).

Ниже приведен один из способов:

PHP:

<?php

$idkkm= _POST("idkkm");

$sql = "SELECT * FROM online_kkm where id='$idkkm'";
$result = $sqlcn->ExecuteSQL($sql) or die("Не могу выбрать список настроек!" . mysqli_error($sqlcn->idsqlconnection));
$param=array();
$param["mode"]="getinfo";
while ($row = mysqli_fetch_array($result)) {
    $param["ipaddress"] = $row['ipaddress'];
    $param["ipport"] = $row['ipport'];
    $param["model"] = $row['model'];
    $param["accesspass"] = $row['accesspass'];
    $param["userpass"] = $row['userpass'];
    $param["protocol"] = $row['protocol'];
    $param["logfilename"] = $row['logfilename'];
    $param["testmode"] = $row['testmode'];
    $param["libpath"] = $row['libpath'];
    $param["version"] = $row['version'];
    $ppath= $row['ppath'];
};
$jsonparam= base64_encode(json_encode($param));
$command = "/usr/bin/env python $ppath $jsonparam 2>&1";
$pid = popen( $command,"r");
while( !feof( $pid ) )
{
 echo fread($pid, 256);
 flush();
 ob_flush();
 usleep(100000);
}
pclose($pid);

?>

Python:

#!/usr/bin/env python2
#encoding: UTF-8
import sys, json,base64

prm=json.loads(base64.b64decode(sys.argv[1]))

print prm["ipaddress"]

Т.е. что мы сделали?

  1. В скрипте на PHP сформировали json строку с параметрами и закодировали её в base64
  2. Вызвали python скрипт с аргументом в кодированной строки
  3. Python скрипт соответственно обратно декодирует и обрабатывает json

Профит.

1С Розница 2.2 после обновления до 2.2.7.40 недостаточно прав

После обновления пользователи стали ловить такие ошибки:

 Исправляем:

Вариант 1

Вариант 2

Даем пользователю роль «Базовые права ИПП» (Интернет поддержки пользователей)

Цветовой вывод текста в консоли Linux

Любой текст выводимый в консоль можно раскрасить., заключая выводимое в ESC последовательности вида

\x1b[31m-что то пошло не так (с)..\x1b[0m\n

, где \x1b[ЦВЕТ;ФОНm — включение цвета, \x1b[0m — отключение, ХХ можно задавать согласно следующей таблицы:

атрибуты
0 нормальный режим
1 жирный
4 подчеркнутый
5 мигающий
7 инвертированные цвета
8 невидимый
цвет текста
30 черный
31 красный
32 зеленый
33 желтый
34 синий
35 пурпурный
36 голубой
37 белый
цвет фона
40 черный
41 красный
42 зеленый
43 желтый
44 синий
45 пурпурный
46 голубой
47 белый

Удаленный доступ к серверу по ssh без ввода пароля

1) Создадим ключи ssh на сервере(1):

ssh-keygen

2) С этого же сервера(1) скопируем получившийся ключ на сервер (2):

ssh-copy-id -i /home/blabla/.ssh/id_rsa.pub blabla@98.27.12.12

3) Пробуем зайти на сервер(2) по ssh:

ssh blabla@98.27.12.12

Ура! Входит без пароля..

Вторая серия марлезонского балета..про судеобных приставов, сбербанк и однофамильцев.

Вот первая часть. Напомню в кратце предисторию. В Августе 2017, маме приходит уведомление, что с её вклада в Сбербанке списано 37тысяч рублей в «счет погашения долга за коммунальные услуги». Побежала в банк — там пояснили что от приставов пришла бумага «взыскать». Побежала к приставам — «мы ни в чем не виноваты, это всё сбербанк».Оказывается, в г. Вологда у моей мамы есть полная тезка по ФИО и дате рождения. Но с долгами по коммуналке.  .  Несколько раз пробежавшись по кругу (сбербанк-приставы), покричав немного и там и тут (ну вспыльчивая женщина, но ктоб не покричал, еслиб денег лишился ни за что), деньги вернули. Но процентов на вкладе лишилась. Несколько раз писала бумаги, заявления в сбербанк- проценты не восстановили. Пожаловалась в прокуратуру на судебного пристава — отписались бумажкой «мы ни в чем не виноваты, это сбербанк, а женщина тут сама пришла и всех наоскорбляла».

Итак, вторая часть. 15 Сентября, время получать пенсию. Приходит только половина??? Ну так понятно, продолжение истории,  приставы арестовали часть пенсии «за долги».

Вот и что теперь делать? Никто опять «не виноват». Мама сейчас опять пробегает несколько дней, деньги вернут. Что дальше? Менять фамилию, чтоб отстали? Или ждать когда запретят выезд за границу на отдых, арестуют еще чтото?

UPD1: Наибольший отклик история получила здесь: https://vk.com/onlinevologda?w=wall-46249401_6367834

UPD2: На ситуацию обратили внимание журналисты. Взяли интервью. Ждем развития ситуации.

UPD3: Вышла статья https://vk.com/away.php?to=http%3A%2F%2Fnewsvo.ru%2Fnews%2F109869&cc_key= Чуть попереврано, приставы «не виноваты», но на самом деле всё чуть сложнее. Почемуто в БД приставов две ФИО с одинаковыми паспортами но разной пропиской.