2013-09-17 2 views
0

Привет, я автоматизирую некоторые команды. Существует способ вызова программы perl, которую можно вызвать, перейдя к конкретному пользователю. Я написали код какавтоматизация команды в сценарии оболочки

expect -c 'spawn su - poletst; send "1\r";interact' 
cmsyscon Test 

Этот сценарий должен запускаться на сервере. После выбора пользователя выбрана область. cmsyscon - это команда, которая вызывает модуль perl (я не знаю много). Проблема заключается в том, что пользователь переключается и выбирается область, но на консоли ничего не происходит, и когда я предоставляю команду exit на консоли, то запускается cmsyscon. в чем проблема со сценарием и как его исправить?

ответ

0

Я раньше не пробовал ожидать, но, глядя на него, ожидаю, что вы начнете процесс, который ваша команда выхода убивает, позволяя запустить cmsyscon. То есть Вы не выполняете cmsyscon в процессе, который вы только что создали.

Попробуйте что-то вроде:

expect -c 'spawn su - poletst; send "1\r"; interact; cmsyscon Test' 
0

Отправьте команду вручную оболочки Switched пользователя:

expect -c 'spawn su - poletst; send "1\r"; send "cmsyscon Test\r";interact' 

Или

expect -c 'spawn su - poletst; send "1\r"; expect "\$"; send "cmsyscon Test\r";interact' 

Заменить \$ с некоторыми частями строки вашего пользователя, если он не работает.

Смежные вопросы