вторник, 12 марта 2019 г.

Инструкция по настройке OpenOpc.

Указываю версии с которыми у меня заработало. Пробовал под Windows 7 и XP.

Windows:
1. Python 2.7 я пробовал х86
2. Библиотека OpenOPC 1.3.1
3. Pywin32-224
4. Pyro 3.16
Этого достаточно чтобы подключиться к локальным OPC по мануала с сайта. Следует обратить внимание, что opc = OpenOPC.client() используется именно для локального подключения. Обращение к значениям тегов передается в иерархическом виде.

Для удаленного запуска необходимо запустить gateway на сервере, отключить брандмауэр. Для ХР потребовалось прописать в переменной окружения OPC_GATE_HOST собственный IP в сетке из которой подключение. Не захотел работать с OPC сервером ОВЕН - выдавал ошибку при подключении, однако к кругу и текону подключился.

Linux:
1. Установить pyro 3.16
2. В интерактивном режиме запускал из папки с исходниками иначе не импортировалось.

ЗЫ Для работы с овеном установил dll graybox - не помогло.

Архив с рабочими файлами.

понедельник, 1 августа 2016 г.

Установка Zabbix

Устанавливал Zabbix по мануалу https://www.zabbix.com/documentation/3.0/ru/manual/installation/install_from_packages. В результате, на странице localhost/zabbix появилось следующее соообщение:
[T_ZBX_STR, O_NO, null, null, 'isset({enter})', _('Username')], 'password' => [T_ZBX_STR, O_OPT, null, null, 'isset({enter})'], 'sessionid' => [T_ZBX_STR, O_OPT, null, null, null], 'reconnect' => [T_ZBX_INT, O_OPT, P_SYS|P_ACT, BETWEEN(0, 65535), null], 'enter' => [T_ZBX_STR, O_OPT, P_SYS, null, null], 'autologin' => [T_ZBX_INT, O_OPT, null, null, null], 'request' => [T_ZBX_STR, O_OPT, null, null, null] ]; check_fields($fields); // logout if (isset($_REQUEST['reconnect'])) { DBstart(); add_audit_details(AUDIT_ACTION_LOGOUT, AUDIT_RESOURCE_USER, CWebUser::$data['userid'], '', _('Manual Logout'), CWebUser::$data['userid'] ); DBend(true); CWebUser::logout(); redirect('index.php'); } $config = select_config(); if ($config['authentication_type'] == ZBX_AUTH_HTTP) { if (!empty($_SERVER['PHP_AUTH_USER'])) { $_REQUEST['enter'] = _('Sign in'); $_REQUEST['name'] = $_SERVER['PHP_AUTH_USER']; } else { access_deny(ACCESS_DENY_PAGE); } } // login via form if (isset($_REQUEST['enter']) && $_REQUEST['enter'] == _('Sign in')) { // try to login $autoLogin = getRequest('autologin', 0); DBstart(); $loginSuccess = CWebUser::login(getRequest('name', ''), getRequest('password', '')); DBend(true); if ($loginSuccess) { // save remember login preference $user = ['autologin' => $autoLogin]; if (CWebUser::$data['autologin'] != $autoLogin) { API::User()->updateProfile($user); } $request = getRequest('request'); if (!zbx_empty($request)) { $url = $request; } elseif (!zbx_empty(CWebUser::$data['url'])) { $url = CWebUser::$data['url']; } else { $url = ZBX_DEFAULT_URL; } redirect($url); exit; } // login failed, fall back to a guest account else { CWebUser::checkAuthentication(null); } } else { // login the user from the session, if the session id is empty - login as a guest CWebUser::checkAuthentication(CWebUser::getSessionCookie()); } // the user is not logged in, display the login form if (!CWebUser::$data['alias'] || CWebUser::$data['alias'] == ZBX_GUEST_USER) { switch ($config['authentication_type']) { case ZBX_AUTH_HTTP: echo _('User name does not match with DB'); break; case ZBX_AUTH_LDAP: case ZBX_AUTH_INTERNAL: if (isset($_REQUEST['enter'])) { $_REQUEST['autologin'] = getRequest('autologin', 0); } if ($messages = clear_messages()) { $messages = array_pop($messages); $_REQUEST['message'] = $messages['message']; } $loginForm = new CView('general.login'); $loginForm->render(); } } else { redirect(zbx_empty(CWebUser::$data['url']) ? ZBX_DEFAULT_URL : CWebUser::$data['url']); }

В логах ничего внятного не было, при этом в исходном коде был данный php скрипт только полностью, оказалось в исходнике были некорректно закрыты комментарии, в результате чего скрипт не выполнялся, удалил комментарии из файла /usr/share/zabbix/index.php, все заработало.

понедельник, 21 сентября 2015 г.

Добавление пути к переменной PATH

Добавление пути к переменной PATH: export PATH="/usr/sbin:$PATH"
Отключение автообновления во время работы chrome os (каждый раз при запуске):
sudo initctl stop update-engine
вводить в ctrl+alt+t --> shell
sudo
 initctl stop update-engine
sudo initctl stop update-engine
sudo initctl stop update-engine
sudo initctl stop update-enginesudo initctl stop update-engine

пятница, 18 сентября 2015 г.

Итак, установить crouton на chromebook (у меня это acer c720) достаточно просто. Все шаги, причем на русском описаны здесь, а это гитхаб разработчика, где все описано более подробно. Могу лишь дополнить, что для установки дистрибутива отличного от ubuntu с особым менеджером окон нужно использовать такую конструкцию: sudo sh -e ~/Downloads/crouton -r kali -t xfce, где вместо kali - подставить нужный дистрибутив, вместо xfce, нужный менеджер окон. 
Впрочем, и это можно найти в этой вики.
Способ же установки virtualbox, описанный здесь по крайней мере у меня (а на сколько я понял не только у меня) не работает. Причина тому, что google в своем очередном обновлении chrome os подкрутила vmx и lsm.module_locking из-за чего их так просто не поправить.
Решение:
Перед установкой (а она встать не должна) virtualbox в shell chrome os (chronos) ввести запустить данный скрипт:
#!/bin/sh -e
C_ROOT=''
C_KERNEL=''
##
## Exits the script with exit code $1, spitting out message $@ to stderr
error() {
local ecode="$1"
shift
echo "$*" 1>&2
exit "$ecode"
}
##
## Ensure this script is run from a Cros shell (as chronos or superuser)
if [ "x$USER" != 'xchronos' -a "x$SUDO_USER" != 'xchronos' ]; then
error 1 "This script has to be run from a Cros shell (as chronos or superuser) - exiting!"
fi
#Following routine borrowed from @drinkcat ;)
ROOTDEVICE="`rootdev -d -s`"
if [ -z "$ROOTDEVICE" ]; then
error 1 "Cannot find root device."
fi
if [ ! -b "$ROOTDEVICE" ]; then
error 1 "$ROOTDEVICE is not a block device."
fi
# If $ROOTDEVICE ends with a number (e.g. mmcblk0), partitions are named
# ${ROOTDEVICE}pX (e.g. mmcblk0p1). If not (e.g. sda), they are named
# ${ROOTDEVICE}X (e.g. sda1).
ROOTDEVICEPREFIX="$ROOTDEVICE"
if [ "${ROOTDEVICE%[0-9]}" != "$ROOTDEVICE" ]; then
ROOTDEVICEPREFIX="${ROOTDEVICE}p"
fi
##
## 0.Disable verified boot : (You could do this later, but you have to do this before step 5. IT WON'T BOOT OTHERWISE!)
echo "## 0.Disable verified boot"
echo -n "Changing system to allow booting unsigned images: "
sudo crossystem dev_boot_signed_only=0 || ( echo; error 2 "*** Couldn't disable 'verified boot'" )
echo 'crossystem dev_boot_signed_only=0'
sleep 3 && echo
##
## 1.Get current root & assign current kernel
echo "## 1.Get current root & assign current kernel"
echo -n "Determining current kernel = "
C_ROOT=`rootdev -s`
if [ $C_ROOT = ${ROOTDEVICEPREFIX}3 ]; then C_KERNEL=2; else C_KERNEL=4; fi
echo "$C_KERNEL"
sleep 3 && echo
##
## 2.Copy the existing kernel configuration into a file
echo "## 2.Copy the existing kernel configuration into a file"
echo "Copying current kernel into file = kernel$C_KERNEL"
sudo /usr/share/vboot/bin/make_dev_ssd.sh --save_config /tmp/x --partitions $C_KERNEL || ( echo; error 2 "*** Couldn't create kernel config file" )
sleep 3 && echo
##
## 3.Edit the config file and add 'disablevmx=off' + 'lsm.module_locking=0' to the config line
echo "## 3.Edit the config file and add 'disablevmx=off' + 'lsm.module_locking=0' to the config line"
if grep --color 'disablevmx=off lsm.module_locking=0' /tmp/x.$C_KERNEL ; then
echo; error 255 "*** Kernel configuraiton already modified - exiting"
fi
echo -n "Editing /tmp/x.$C_KERNEL to append = "
sudo sed -i -e 's/$/ disablevmx=off lsm.module_locking=0/' /tmp/x.$C_KERNEL || ( echo; error 2 "*** Couldn't edit kernel config file" )
echo "disablevmx=off lsm.module_locking=0"
sleep 3 && echo
##
## 4.Save the current kernel configuration and reload the new one
echo "## 4.Save the current kernel configuration and reload the new one"
echo -n "[ press ENTER to continue - Ctrl-C to abort ] "; read DOIT
echo "Reloading the kernel configuration from /tmp/x.$C_KERNEL"
sudo /usr/share/vboot/bin/make_dev_ssd.sh --set_config /tmp/x --partitions $C_KERNEL || ( echo; error 2 "*** Couldn't reload kernel configuration" )
sleep 3 && echo
##
## 5.reboot, and enjoy VT-x extensions
echo "## 5.reboot, and enjoy VT-x extensions"
echo "All done - rebooting..."
echo -n "[ press ENTER to continue - Ctrl-C to abort ] "; read DOIT
sudo reboot



exit
Который я взял отсюда. Собственно, скачать его можно в chroote, сохранить в папке ~/Downloads, сделать исполняемым chmod +x enable-vmx.sh и запустить в chronos командой sudo sh ~/Downloads/enable-vmx.sh. После чего virtualbox должна успешно встать (а если нет, то перекомпилировать ядро с заголовочными файлами и переустановить его), а windows xp успешно установиться.
З.Ы.
После обновления chrome os винда перестала загружаться даже после переустановки. Опытным путем было выяснено, что причина в службе plug and play, которую можно выключить, запустив винду в безопасном режиме --> пуск --> выполнить --> msconfig.exe --> службы --> внизу поставить галочку "не отображать службы microsoft" --> и убрать галочку с plug and play, после чего нужно все сохранить и перезапустить, убедившись, что все работает.
Работает как на стоком ssd на 16 гб, так и на этом ssd на 128 гб.