|
2 / 2 / 1
Регистрация: 25.06.2013
Сообщений: 308
|
|
Аналог goto или try в bash15.12.2023, 13:11. Показов 1395. Ответов 6
Пытаюсь сделать командой проверку условия подключения в серверу по SSH, и если сервер не отвечает, то завершить скрипт с сообщением, что сервер недоступен. Если всё ок, то продолжить работу.
Есть ли в bash возможность перейти к определённому участку кода типа goto, или проверить, что команда: spawn ssh username@hostname завершилась с ошибкой? Может для expect есть какое-то условие? Типа если не дождался нужной строки, то завершить работу.
0
|
|
| 15.12.2023, 13:11 | |
|
Ответы с готовыми решениями:
6
Подскажите аналог goto в bash или как реализовать такой переход
Аналог goto |
| 15.12.2023, 13:19 | |
|
неужели в гугле забанили?
https://stackoverflow.com/ques... nd-in-bash
1
|
|
|
3305 / 933 / 201
Регистрация: 14.01.2013
Сообщений: 4,773
|
|||||||
| 15.12.2023, 13:29 | |||||||
1
|
|||||||
|
6799 / 2297 / 349
Регистрация: 10.12.2013
Сообщений: 7,924
|
|||||||||||||
| 16.12.2023, 16:55 | |||||||||||||
|
программа expect использует tcl-синтаксис для работы своего скрипта. Кликните здесь для просмотра всего текста
Checking For Errors From spawn
All of the examples so far have assumed that spawn always succeeds. The bad news is that spawn does not always succeed. The good news is that it only fails in peculiar envi- ronments or in peculiar situations. In this section, I will describe the meaning of "peculiar" and how to check whether spawn succeeded or not. The spawn command normally returns the process id of the newly spawned process.t This is generally of little value since spawned processes are more easily manipulable by their spawn ids. However, it is occasionally useful to be able to kill a process using its process id rather than going through some long interaction.
Running out of various system resources can cause spawn to fail. For example, spawn allocates dynamic memory as well as a logical terminal interface. Failures like this can be caught using Tcl's catch command:
Even if spawn does not return an error, that is not a guarantee that it was entirely successful. To understand why, it is necessary to explain a little of how spawn is implemented. The spawn command follows the traditional UNIX paradigm for running a new program. First, Expect forks. Forking is the UNIX way of generating a new process. Initially, the new process is still running Expect code. This allows Expect to prepare the environment appropriately for the new program. The last step is for Expect (in the new process) to overlay itself with the new program. At this point, the original Expect process is still running, and the new process is running the requested program. This last step of loading the program can fail if, for example, the program does not exist. If it does not exist, the new process must communicate this back to the Expect process. Ironically, the failure of the program to be found can be communicated but not its success. The reason is that the very act of successfully running the program removes any functionality of the earlier program (i.e., Expect). Thus, the new program has no idea how to signal success or even that it should. Because of this, the original Expect process cannot wait around for a possible failure. The spawn command returns immediately. If the process does fail however, the new process sends back an error report in such a way that the Expect process hears it at the next convenient moment-the first expect command. Exploring Expect Checking the return value of spawn (as shown above with catch) is a good idea if you want your code to be bulletproof. These kinds of errors are often due to transient condi- tions that may go away if the operation is retried, such as a lack of memory. On the other hand, checking spawn's success via the first expect is less valuable. For example, if a standard utility such as /bin/sh is being spawned, there is little point in checking if it succeeded. If it did not, the computer has such severe problems that few programs will be able to continue to nm. The primary circumstance in which to check the first expect after a spawn is when the program is unknown at the time the script is written. For example, if a user can type in arbitrary command names dynamically, these names should be checked. Note that using "file executable" is a reasonable test but it is not guaranteed since there is a window between the time the file can be tested and the time it is executed, during which the file can change.
1
|
|||||||||||||
|
2 / 2 / 1
Регистрация: 25.06.2013
Сообщений: 308
|
|
| 16.12.2023, 18:01 [ТС] | |
|
Спасибо всем. Буду пробовать.
0
|
|
|
325 / 50 / 11
Регистрация: 08.04.2022
Сообщений: 194
|
|||||||||||||||||||||
| 18.12.2023, 05:50 | |||||||||||||||||||||
Сообщение было отмечено Рафик как решение
Решение
Мне вспомился Перл. В нем отсутствует switch/case/else - удобная и, в некотором роде, красивая языковая конструкция для множественного выбора, которая есть во многих других си-подобных языках. Хотя сия недостача и реализуется разными дополнительными модулями, но, на самом деле, все они суть синтаксический сахар, и, на самом деле, Перлу ни они (модули) ни она (конструкция) не нужны, потому что в нем достаточно своих средств для реализации множественного выбора.
Аналогично, в Шелле, а точнее в Баше, достаточно средств для реализации весьма сложной логики. Если какая-то команда завершилась с ошибкой и надо срочно завершить выполнение, то мжно писать как-то так
1
|
|||||||||||||||||||||
|
2 / 2 / 1
Регистрация: 25.06.2013
Сообщений: 308
|
|
| 18.12.2023, 06:20 [ТС] | |
|
siberian-man, огромное человеческое спасибо вам за этот пост!
0
|
|
| 18.12.2023, 06:20 | |
|
Помогаю со студенческими работами здесь
7
Аналог goto в js
Аналог команды goto в с++ Есть ли в маткаде аналог goto?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|