Сценарий TCL/Expect с логикой if/else на основе IP-адреса хоста
Поэтому я использую / наслаждаюсь /usr/bin/ Ожидаем сценариев, потому что он может быстро войти на сервер, так как он автоматически заполняет мой идентификатор пользователя и пароль. После некоторого беглого прочтения я понял, что это в основном надмножество TCL, о котором я ничего не знаю.
Я постоянно подключаюсь к своему серверу MacBook Pro и хочу сделать еще один шаг к сценарию входа в систему и заставить его войти в NAS во внутренней сети одним способом, если я нахожусь в домашней сети (с RFC-1918). IP-адрес 192.168.0.0/24) и войти в него по-другому, если я не в этой сети. В основном условие if-else.
Команда для возврата текущего адреса хоста IPv4 (по крайней мере, в macOS):
ifconfig en0 | grep 'inet' | awk '$1 == "inet" { print $2 }'
(Заменить en0
с интерфейсом, используемым по мере необходимости; это Wi-Fi на моем Mac.)
Это возвращает адрес IPv4. Я думал, что эта команда должна вызываться некоторой функцией (которая, по-видимому, TCL вызывает процедуры), и ее вывод возвращается к условию if-else, которое затем выполняет соответствующий набор команд и выходит из сценария.
Я дошел до того, что делал простые if-else, но я не уверен, как стандартный вывод команд можно включить в скрипт. Есть идеи?
1 ответ
Чтобы получить вывод команды в Tcl, используйте exec
:
- https://stackoverflow.com/questions/12605741/how-to-get-the-results-standard-output-of-a-tcl-exec-command
- https://www.tcl.tk/man/tcl/TclCmd/exec.htm
Например, set myvar [exec "date -u"]