myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
 
Ответить в данную темуНачать новую тему

> Как вызвать bash скрипт из Lua

Теги
Нет тегов для показа
Iskandark
сообщение 23.2.2015, 21:58
Сообщение #1


Активный участник
***

Группа: Пользователи
Сообщений: 61
Регистрация: 24.10.2008
Из: Moscow
Пользователь №: 875
Спасибо сказали: 0 раз




Всем привет!
Есть задача вызвать bash скрипт (в Linux) из Lua. Скрипт например может выполнять синхронизацию времени, отправку email или что угодно другое.

Возможно ли из Lua выполнить bash скрипт?
Go to the top of the page
+Quote Post
Alexey
сообщение 24.2.2015, 6:42
Сообщение #2


7 квадратиков
*******

Группа: Модераторы
Сообщений: 791
Регистрация: 21.1.2009
Пользователь №: 1 895
Спасибо сказали: 287 раз




Возможно.
http://www.lua.org/manual/5.1/manual.html#pdf-os.execute
http://www.lua.org/manual/5.1/manual.html#pdf-io.popen


Спасибо сказали:
Go to the top of the page
+Quote Post
Iskandark
сообщение 25.2.2015, 11:09
Сообщение #3


Активный участник
***

Группа: Пользователи
Сообщений: 61
Регистрация: 24.10.2008
Из: Moscow
Пользователь №: 875
Спасибо сказали: 0 раз




Пробую из lua вызвать bash скрипт:
Код
os.execute('/var/myscripts/synctime.sh')


Скрипт выполняет синхронизацию времени, отдельно он запускается. Вот содержимое synctime.sh:
Код
#!/bin/bash

/usr/sbin/ntpdate-debian >> /var/log/synctime.log


Но в итоге хаб намертво зависает, а в процессах висит зависший процесс с исполнением /usr/sbin/ntpdate-debian


Пока его не убить, не отвисает...
Go to the top of the page
+Quote Post
deseven
сообщение 25.2.2015, 20:45
Сообщение #4


Участник
**

Группа: Пользователи
Сообщений: 36
Регистрация: 12.11.2009
Пользователь №: 5 019
Спасибо сказали: 15 раз




Запускай ntpdate с ключом -v и логируй все.

Код
/usr/sbin/ntpdate -v pool.ntp.org >> /var/log/synctime.log 2>> /var/log/synctime_error.log
Go to the top of the page
+Quote Post
Iskandark
сообщение 25.2.2015, 21:02
Сообщение #5


Активный участник
***

Группа: Пользователи
Сообщений: 61
Регистрация: 24.10.2008
Из: Moscow
Пользователь №: 875
Спасибо сказали: 0 раз




Цитата(deseven @ 25.2.2015, 20:45) *
Запускай ntpdate с ключом -v и логируй все.

Код
/usr/sbin/ntpdate -v pool.ntp.org >> /var/log/synctime.log 2>> /var/log/synctime_error.log


В /var/log/synctime_error.log пусто. А вот в /var/log/synctime.log написало:

Код
25 Feb 21:57:00 ntpdate[962]: ntpdate 4.2.6p5@1.2349-o Sat May 12 09:54:56 UTC 2012 (1)
Go to the top of the page
+Quote Post
deseven
сообщение 25.2.2015, 21:41
Сообщение #6


Участник
**

Группа: Пользователи
Сообщений: 36
Регистрация: 12.11.2009
Пользователь №: 5 019
Спасибо сказали: 15 раз




Хорошо, добавь тогда еще и -d
Go to the top of the page
+Quote Post
Iskandark
сообщение 25.2.2015, 22:39
Сообщение #7


Активный участник
***

Группа: Пользователи
Сообщений: 61
Регистрация: 24.10.2008
Из: Moscow
Пользователь №: 875
Спасибо сказали: 0 раз




Цитата(deseven @ 25.2.2015, 21:41) *
Хорошо, добавь тогда еще и -d


Для случая:
Код
/usr/sbin/ntpdate -v -d pool.ntp.org >> /var/log/synctime.log 2>> /var/log/synctime_error.log

Ничего не изменилось: в /var/log/synctime_error.log пусто, а в /var/log/synctime.log написало тоже самое "25 Feb 23:13:12 ntpdate[2042]: ntpdate 4.2.6p5@1.2349-o Sat May 12 09:54:56 UTC 2012 (1)"

Для случая:
Код
/usr/sbin/ntpdate -v pool.ntp.org >> /var/log/synctime.log 2>> /var/log/synctime_error.log -d

В /var/log/synctime_error.log появилась запись:
Код
Error resolving -d: Name or service not known (-2)
25 Feb 23:14:28 ntpdate[2083]: Can't find host -d: Name or service not known (-2)
Go to the top of the page
+Quote Post
deseven
сообщение 26.2.2015, 0:44
Сообщение #8


Участник
**

Группа: Пользователи
Сообщений: 36
Регистрация: 12.11.2009
Пользователь №: 5 019
Спасибо сказали: 15 раз




интересно
а если просто так запустить с ключами -v и -d?
типичный вывод должен быть такого плана
Код
26 Feb 02:43:45 ntpdate[22400]: ntpdate 4.2.6p5@1.2349-o Sat Dec 20 02:51:49 UTC 2014 (1)
Looking for host 10.10.10.10 and service ntp
host found : 10.10.10.10
transmit(10.10.10.10)
transmit(10.10.10.10)
transmit(10.10.10.10)
transmit(10.10.10.10)
transmit(10.10.10.10)
10.10.10.10: Server dropped: no data
server 10.10.10.10, port 123
stratum 0, precision 0, leap 00, trust 000
refid [10.10.10.10], delay 0.00000, dispersion 64.00000
transmitted 4, in filter 4
reference time:    00000000.00000000  Thu, Feb  7 2036 11:28:16.000
originate timestamp: 00000000.00000000  Thu, Feb  7 2036 11:28:16.000
transmit timestamp:  d898c094.530edaa3  Thu, Feb 26 2015  2:43:48.324
filter delay:  0.00000  0.00000  0.00000  0.00000
         0.00000  0.00000  0.00000  0.00000
filter offset: 0.000000 0.000000 0.000000 0.000000
         0.000000 0.000000 0.000000 0.000000
delay 0.00000, dispersion 64.00000
offset 0.000000

26 Feb 02:43:49 ntpdate[22400]: no server suitable for synchronization found
Go to the top of the page
+Quote Post
Iskandark
сообщение 26.2.2015, 10:22
Сообщение #9


Активный участник
***

Группа: Пользователи
Сообщений: 61
Регистрация: 24.10.2008
Из: Moscow
Пользователь №: 875
Спасибо сказали: 0 раз




Цитата(deseven @ 26.2.2015, 0:44) *
интересно
а если просто так запустить с ключами -v и -d?
типичный вывод должен быть такого плана
..


Если из консоли выполнить "ntpdate-debian -d", то вывод похож на представленный...
Go to the top of the page
+Quote Post
deseven
сообщение 26.2.2015, 16:43
Сообщение #10


Участник
**

Группа: Пользователи
Сообщений: 36
Регистрация: 12.11.2009
Пользователь №: 5 019
Спасибо сказали: 15 раз




Делаем вывод, что при запуске из lua что-то отличается от обычного запуска.
Выполни /usr/bin/printenv > /tmp/env просто так
и /usr/bin/printenv > /tmp/env_lua с хаба.
Сравни что отличается.


Спасибо сказали:
Go to the top of the page
+Quote Post
Iskandark
сообщение 26.2.2015, 22:40
Сообщение #11


Активный участник
***

Группа: Пользователи
Сообщений: 61
Регистрация: 24.10.2008
Из: Moscow
Пользователь №: 875
Спасибо сказали: 0 раз




Цитата(deseven @ 26.2.2015, 16:43) *
Делаем вывод, что при запуске из lua что-то отличается от обычного запуска.
Выполни /usr/bin/printenv > /tmp/env просто так
и /usr/bin/printenv > /tmp/env_lua с хаба.
Сравни что отличается.


Явных различий не заметил, кроме кодировки... Вот:

/usr/bin/printenv > /tmp/env

SHELL=/bin/bash
TERM=xterm
SSH_CLIENT=########
SSH_TTY=/dev/pts/0
USER=root
MC_TMPDIR=/tmp/mc-root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAIL=/var/mail/root
PWD=/
LANG=en_US.UTF-8
PS1=\h:\w\$
HISTCONTROL=ignorespace
HOME=/root
SHLVL=2
MC_SID=22170
LOGNAME=root
SSH_CONNECTION=####################
OLDPWD=/tmp
_=/usr/bin/printenv


/usr/bin/printenv > /tmp/env_lua

MAIL=/var/mail/root
SSH_CLIENT=#########
USER=root
SHLVL=2
HOME=/root
OLDPWD=/
SSH_TTY=/dev/pts/0
PS1=\h:\w\$
LOGNAME=root
_=/etc/init.d/ptokax4test
TERM=xterm
MC_SID=22170
HISTCONTROL=ignorespace
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MC_TMPDIR=/tmp/mc-root
LANG=ru_RU.CP1251
SHELL=/bin/bash
PWD=/
SSH_CONNECTION=#############


IP заменил на ####

Попробовал из lua выполнить os.execute('ntpdate-debian') без bash скрипта. Опять процесс завис, значит дело не в bash, а в этом в команде "ntpdate-debian"

Хотя в консоли без lua отрабатывает без проблем.
Go to the top of the page
+Quote Post
deseven
сообщение 27.2.2015, 9:07
Сообщение #12


Участник
**

Группа: Пользователи
Сообщений: 36
Регистрация: 12.11.2009
Пользователь №: 5 019
Спасибо сказали: 15 раз




ntpdate-debian это просто скрипт-враппер над обычным ntpdate
вместо него достаточно вызывать просто /usr/sbin/ntpdate pool.ntp.org

я думаю LANG может иметь значение
попробуй в скрипте который вызываешь написать так
Код
LANG=en_US.UTF-8; /usr/sbin/ntpdate -v -d pool.ntp.org >> /var/log/synctime.log 2>&1


с другой стороны, возможно это что-то со стороны lua
пробовал свой скрипт запускать фоном?
Код
os.execute('/var/myscripts/synctime.sh &')


Спасибо сказали:
Go to the top of the page
+Quote Post
Iskandark
сообщение 27.2.2015, 10:12
Сообщение #13


Активный участник
***

Группа: Пользователи
Сообщений: 61
Регистрация: 24.10.2008
Из: Moscow
Пользователь №: 875
Спасибо сказали: 0 раз




Запихал в sh скрипт "LANG=en_US.UTF-8; /usr/sbin/ntpdate -v -d pool.ntp.org >> /var/log/synctime.log 2>&1"

При выполнении через lua результат старый - процесс синхронизации висит в задачах
При выполнении через консоль - выполняется корректно

При запуске sh скрипта в фоне из lua результат почти такой же - процесс синхронизации висит в задачах за исключение того, что хаб не зависает и не ждет ответа от выполнения...
Go to the top of the page
+Quote Post
deseven
сообщение 27.2.2015, 17:10
Сообщение #14


Участник
**

Группа: Пользователи
Сообщений: 36
Регистрация: 12.11.2009
Пользователь №: 5 019
Спасибо сказали: 15 раз




у меня кончились идеи
если только запускать gdb и смотреть на какой операции ntpdate виснет

а это только с ntpdate происходит?
Go to the top of the page
+Quote Post
Iskandark
сообщение 3.3.2015, 12:42
Сообщение #15


Активный участник
***

Группа: Пользователи
Сообщений: 61
Регистрация: 24.10.2008
Из: Moscow
Пользователь №: 875
Спасибо сказали: 0 раз




Цитата(deseven @ 27.2.2015, 17:10) *
у меня кончились идеи
если только запускать gdb и смотреть на какой операции ntpdate виснет

а это только с ntpdate происходит?


Проверил, только с ntpdate такое происходит. Если в bash скрипт вставить строки с исполнением lua файла, то без проблем отрабатывается...

Значит дело не в bash, а в ntpdate...
Go to the top of the page
+Quote Post

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts Скрипт: Бот который отвечает в лс
4 мамин_парень 128 11.11.2017, 5:57 Посл. сообщение: мамин_парень
No New Posts как сделать вот этот скрипт
12 мамин_парень 491 13.9.2017, 10:51 Посл. сообщение: dimetro
No New Posts Topic has attachmentsИщу скрипт переадресации (redirect)
Переадресация интернет-юзеров
3 AS_Com 450 27.8.2017, 8:05 Посл. сообщение: Ksan
No New Posts Topic has attachmentsСкрипт Thunder.lua
7 Евген76 6 167 9.8.2017, 11:48 Посл. сообщение: Ksan
No New Posts Требуется скрипт
Нужен скрипт запрета на подключение
5 Nikolaevich 1 775 20.8.2016, 19:52 Посл. сообщение: Ksan
No new Topic has attachmentsMagneto - Бесплатный Скрипт Портала Обмена Dc-ссылками Для Локальной Сети
25 UserSide 17 886 17.3.2016, 5:21 Посл. сообщение: dimazikpk
No new ВАЖНО: Topic has attachmentsСкрипт банов для RusHub
тестим и комменьтруем
79 Wariner 47 639 28.9.2015, 13:34 Посл. сообщение: NeirRon
No New Posts Скрипт загрузки файла
1 FreeNas 1 688 21.7.2015, 10:58 Посл. сообщение: HackFresse
No new Topic has attachmentsНовогодний Скрипт
API2
22 Tsd 17 458 12.12.2014, 16:28 Посл. сообщение: Tsd
No New Posts Скрипт запрета видеть чат
запрет видеть чат
2 dimetro 2 170 5.12.2014, 17:37 Посл. сообщение: dimetro
No New Posts Topic has attachmentsпеределать скрипт kinozal.tv
6 BOKOREZ 5 019 30.10.2014, 18:29 Посл. сообщение: Dani_Filth
No New Posts Нужен скрипт
mysql, ip filter
2 shadow3c 2 869 20.8.2014, 20:30 Посл. сообщение: shadow3c
No new votes Опрос: Topic has attachmentsСкрипт онлайн-погоды
скрипт погоды сейчас
57 Perspect 33 559 17.7.2014, 11:52 Посл. сообщение: Ksan
No New Posts Topic has attachmentsPtokax 0.5.0.2 скрипт автозагрузки?
Как добавить в автозагрузку?
1 jonnix 3 244 7.7.2014, 23:31 Посл. сообщение: alex82
No New Posts Нужен игровой скрипт
Девочки против Мальчиков
5 Pro009 3 280 17.5.2014, 3:16 Посл. сообщение: Ksan

 



RSS Сейчас: 23.11.2017, 6:35