Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 28.12.2015
Сообщений: 20

Включение и отключение записи в лог файл

05.05.2024, 16:17. Показов 974. Ответов 22

Author24 — интернет-сервис помощи студентам
Подскажите плз.
Есть примерно такой скрипт
Bash Скопировано
1
2
3
4
#!/bin/bash
LOG="$HOME/scripts/umount.log"
echo START SCRIPT: >> $LOG
date +%x-%R >> $LOG
Как можно включить или отключить запись в лог?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.05.2024, 16:17
Ответы с готовыми решениями:

Алгоритм записи в лог файл, принцип работы?
Интересует процесс записи в лог файл какой вариант лучше? Просьба обосновать ответ Вариант 1: Открыть в начале работы пограммы...

При записи в лог файл - не переносит новые записи на новые строки
foreach( $_FILES as $file ) { $format=pathinfo($file, PATHINFO_EXTENSION); $namefile=pathinfo($file, PATHINFO_FILENAME); ...

BAT-файл для записи в лог имён и дат и времени изменения файлов, созданных после его же последнего запуска
Дня всем ГУРУ доброго! Возникла такая проблема, есть каталог куда периодически пишутся файлы... нужен батник, который проверял бы свой...

22
Заблокирован
05.05.2024, 16:26
Оформить в виде функции (скажем, log()), а в ней проверять переменную, скажем, LOGGING: если true, писать, если false - нет.
1
1076 / 354 / 74
Регистрация: 30.08.2017
Сообщений: 2,175
05.05.2024, 16:37
Лучший ответ Сообщение было отмечено Pphantom как решение

Решение

Ну или колхозный вариант - в лоб.
Bash Скопировано
1
2
LOG="$HOME/scripts/umount.log"
#LOG="/dev/null"
Надо логи - вот выше, не надо - перекомментируете строки.
1
1 / 1 / 0
Регистрация: 28.12.2015
Сообщений: 20
05.05.2024, 16:48  [ТС]
Спасибо, попробую через функцию. Если не получится пойдет и колхозный вариант)
0
30 / 21 / 9
Регистрация: 08.03.2020
Сообщений: 89
05.05.2024, 16:56
kms, или, например так:
Bash Скопировано
1
2
3
4
5
6
7
#!/bin/bash
if [ "$#" -ne 1 ]; then echo usage script condition; fi # если число параметров, переданных скрипту не равно 1
if [ "$1" = true ]; then # если первый параметр равен true, то
    LOG=./log_file.txt
    date=`date '+%D %T'`
    echo start script: $0 -- $date >> $LOG
fi
запускаем скрипт и первым параметром (можете поменять на нужное) передаем true или false, это и будет определять, писать ли в лог или нет.
В лог пишется имя скрипта и дата и время запуска
1
1 / 1 / 0
Регистрация: 28.12.2015
Сообщений: 20
05.05.2024, 17:07  [ТС]
Смысл всех примеров понял, но в баше я вобще никак а скрипт нужен)
Буду конечно разбираться но на данный момент могу только сделать или колхозный вариант или его же но с вариантом от artemkau88. Ну то есть при передаче аргумента false делать переменную
Bash Скопировано
1
#LOG="/dev/null"
ну а при true указывать путь до лога.

У меня скрипт типа такого и там для меня сложнее чем я просто пример привел)
Bash Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
echo START SCRIPT: >> $LOG
date +%x-%R >> $LOG
(
sleep 1;
echo -en "$USER\r";
sleep 1;
echo -en "$PASSWORD\r";
sleep 1;
echo -en "python /etc/scripts/mount.py\r";
sleep 5;
echo -en "exit\r";
sleep 1;
) | telnet $H >> $LOG
0
30 / 21 / 9
Регистрация: 08.03.2020
Сообщений: 89
05.05.2024, 17:14
kms, при указании аргумента false можно вообще ничего не указывать посмотрел скрипт, да, нужно.
Можно при разработке скрипта для критерия записи в лог зарезервировать какой-нибудь его параметр и его использовать, то есть, например:
Bash Скопировано
1
./script.sh $1 $2 $3 ... #$1 $2 $3  - номера параметров скрипта
Например 3 параметр - это критерий. И также в начало скрипта (если будете использовать мой вариант) можно дописать в условие:
Bash Скопировано
1
if [ "$#" -ne 3 ]; then echo usage script parameter1 parameter2 condition; exit 1; fi # если число параметров, переданных скрипту не равно 3
Если предполагается использовать, например 3 параметра, а после условие для записи в лог файл и дальше сам скрипт.
0
1 / 1 / 0
Регистрация: 28.12.2015
Сообщений: 20
05.05.2024, 17:38  [ТС]
artemkau88, может не совсем понял, но мне в лог писать нужно не просто какой то текст а вывод с телнета.
Создал функцию для логирования, работает, но не знаю как передать туда вывод с телнета
Bash Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
echo START SCRIPT: >> $LOG
date +%x-%R >> $LOG
(
sleep 1;
echo -en "$USER\r";
sleep 1;
echo -en "$PASSWORD\r";
sleep 1;
echo -en "python /etc/scripts/mount.py\r";
sleep 5;
echo -en "exit\r";
sleep 1;
) | telnet $H >> $LOG
Вот, в последней строке. Как передать это в функцию?
0
Невнимательный
 Аватар для ft4l
2810 / 1146 / 353
Регистрация: 08.02.2013
Сообщений: 6,548
Записей в блоге: 2
05.05.2024, 17:39
kms,
Bash Скопировано
1
2
#LOG="$HOME/scripts/umount.log"
LOG="/dev/null"
0
1 / 1 / 0
Регистрация: 28.12.2015
Сообщений: 20
05.05.2024, 17:40  [ТС]
ft4l, про это уже было. Оставлю на крайний случай
0
Невнимательный
 Аватар для ft4l
2810 / 1146 / 353
Регистрация: 08.02.2013
Сообщений: 6,548
Записей в блоге: 2
05.05.2024, 17:41
Цитата Сообщение от ft4l Посмотреть сообщение
/dev/null
или по тексту заменить местами $LOG на $LOG2 ... и сделать /dev/null только для $LOG2
... хотя по тексту можно и просто закомментировать ненужное
0
30 / 21 / 9
Регистрация: 08.03.2020
Сообщений: 89
05.05.2024, 17:48
Bash Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash
if [ "$#" -ne 1 ]; then echo usage script condition; exit 1; fi # если число параметров, переданных скрипту не равно 1 выходим с кодом 1
if [ "$1" = true ]; then # если первый параметр равен true, то
    LOG=./log_file.txt
elif [ "$1" = false ]; then
    LOG="/dev/null"
fi
echo START SCRIPT: >> $LOG
date +%x-%R >> $LOG
(
sleep 1;
echo -en "$USER\r";
sleep 1;
echo -en "$PASSWORD\r";
sleep 1;
echo -en "python /etc/scripts/mount.py\r";
sleep 5;
echo -en "exit\r";
sleep 1;
) | telnet $H >> $LOG
0
1 / 1 / 0
Регистрация: 28.12.2015
Сообщений: 20
05.05.2024, 18:08  [ТС]
artemkau88, ну да, я про это выше писал, в зависимости от передаваемого аргумента менять переменную LOG.

Сделал так, вроде работает. Осталось определелиться, менять переменную LOGGING в самом файле или через передаваемый аргумент при вызове скрипта. Но это уже второе.
Bash Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/bin/bash
USER="root"
# PASSWORD="root"
LOG="/volume1/public/e2_scripts/mount.log"
LOGGING=true
 
function Log()
{
 if "$LOGGING"; then
    echo $1 >> $LOG 
 fi
}
 
HOSTS="
192.168.1.41
192.168.1.46
"
for H in $HOSTS
do
Log 'START SCRIPT:'
Log `date '+%x-%R'`
output="$((
sleep 1;
echo -en "$USER\r";
sleep 1;
# echo -en "$PASSWORD\r";
# sleep 1;
echo -en "python /etc/enigma2/mount_net_share.py\r";
sleep 5;
echo -en "exit\r";
#sleep 1;
) | telnet $H)"
Log "$output"
Log '==================================='
done
0
 Аватар для volodin661
6328 / 2169 / 340
Регистрация: 10.12.2013
Сообщений: 7,452
06.05.2024, 14:12
kms,
есть поприличней инструмент для работы с telnet-like приложениями.

Expect – это общее название инструментов, реализующих:
• автоматизацию взаимодействия с терминалом, даже если для этого необходим ввод пароля или выполнение иных условий;
• диалоговую модель взаимодействия, которая основывается на простом ритме запросов и ответов.

Expect – это язык программирования высокого уровня с синтаксисом, идентичным Tcl и добавлением нескольких специальных инструкций, отсутствующих в Tcl.
Expect – это исполняемый файл, реализующий возможности одноименного языка и корректно распознающий исходный код, написанный на языке Expect.

Добавлено через 16 минут
Цитата Сообщение от kms Посмотреть сообщение
но в баше я вобще никак а скрипт нужен
а bash и не нужен. ( python, java, ruby, tcl, perl, go etc )
1
321 / 46 / 11
Регистрация: 08.04.2022
Сообщений: 177
06.05.2024, 16:30
Почитайте описание команды exec, чтобы в каждой команде не писать это
Цитата Сообщение от kms Посмотреть сообщение
>> $LOG
Так можно назначить stdout/stderr как в отдельные файлы (пример 1), так и в один (см. пример 2).
Bash Скопировано
1
2
3
4
5
6
7
8
9
10
11
## пример 1
exec >>"/tmp/logfile.out"
exec 2>>"/tmp/logfile.err"
 
## пример 2
#exec >>"/tmp/logfile.log"
#exec 2>&1
 
hostname
bla -bla -bla
date
1
1 / 1 / 0
Регистрация: 28.12.2015
Сообщений: 20
06.05.2024, 17:05  [ТС]
siberian-man, спасибо, буду знать
volodin661, глянул, у меня нету Expect а ради одного случая что то устанавливать не охота.
Цитата Сообщение от volodin661 Посмотреть сообщение
а bash и не нужен. ( python, java, ruby, tcl, perl, go etc )
Точно, не знаю что меня перекинуло на баше, проще было бы на питоне
Ну теперь уже ладно. В принципе все работает.
0
 Аватар для volodin661
6328 / 2169 / 340
Регистрация: 10.12.2013
Сообщений: 7,452
07.05.2024, 13:14
Цитата Сообщение от kms Посмотреть сообщение
у меня нету. устанавливать не охота
не удивлён.
поколение next. но почему-то шмайлов маловато, всего 2 на 4 предложения.
неохота - пишется слитно.
0
1 / 1 / 0
Регистрация: 28.12.2015
Сообщений: 20
07.05.2024, 13:29  [ТС]
volodin661, детский сад. Обиделся что ли?
У меня NAS Synology, я там специально все лишнее по удалял, что бы по шустрее был и ставить что то еще ради одного раза, нафиг?
PS: Не знаю сколько тебе лет, но возможно когда я на линуксе безвылазно сидел ты еще под стол бегал.
Но это было очень давно.
0
 Аватар для volodin661
6328 / 2169 / 340
Регистрация: 10.12.2013
Сообщений: 7,452
07.05.2024, 14:14
Цитата Сообщение от kms Посмотреть сообщение
когда я на линуксе безвылазно сидел
недетский уровень компетенции сидельца ощущается.

expect появился ~ в 1993-м
0
1 / 1 / 0
Регистрация: 28.12.2015
Сообщений: 20
07.05.2024, 14:27  [ТС]
Кривлянье, неспособность улавливать суть разговора, одним словом поколение пепси.
При чем тут expect? Или ты узнал это слово и теперь везде его упоминаешь?
Это пройдет...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.05.2024, 14:27
Помогаю со студенческими работами здесь

Включение\отключение звука
Добрый день еще раз. Кто знает, как можно отключить системный звук? Ну и обратно включить следовательно, что бы можно было повесить...

Отключение и включение меню
Здравствуйте! Подскажите, пожалуйста, как отключить меню со всеми подменю сразу, а не по отдельности? Имеется: файл с ресурсами ...

Отключение\Включение дисководов
Как программно включить/выключить дисководы? Хоть дайте какую-нубудь информацию.:-[

Включение / отключение прокси
Добрый день! Постоянно требуется вкл./откл. прокси в LAN Settings -> use a proxy server for your lan. Создал батник, где в реестре...

Отключение / включение функций
У меня на локалхосте, я так подозреваю, отключена функция flush(). Подскажите кк её включить? Заранее благодарен!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как работает Node.js изнутри
run.dev 29.03.2025
Node. js изменил подход к разработке веб-приложений, позволив использовать JavaScript не только на стороне клиента, но и на сервере. Созданный в 2009 году Райаном Далем, этот открытый,. . .
Моки в Python: Mock Object Library
py-thonny 29.03.2025
Тестирование кода требует особого подхода, когда речь идёт о компонентах, взаимодействующих с внешним миром. Мы часто сталкиваемся с непредсказуемостью HTTP-запросов, чтением данных из базы или. . .
JavaScript: Управление памятью и улучшение производительности
run.dev 29.03.2025
В отличие от низкоуровневых языков программирования, JavaScript не требует ручного выделения и освобождения памяти. Здесь работает автоматический сборщик мусора, который определяет, какие объекты. . .
Мультитенантная архитектура со SpringBoot и PostgreSQL
ArchitectMsa 29.03.2025
SaaS-приложения редко обслуживают одного клиента и обычно они должны поддерживать множество организаций, каждая из которых работает в своём изолированном пространстве. Мультитенантная архитектура. . .
std::span в C++: Производительность и лучшие практики
NullReferenced 28.03.2025
std::span — одно из самых недооценённых нововведений стандарта C++20, которое радикально меняет подход к работе с непрерывными последовательностями данных. По сути, это невладеющее представление. . .
Многопоточность в C#: Threadpool
UnmanagedCoder 28.03.2025
Пул потоков в C# — это коллекция заранее созданных и готовых к использованию потоков, которые находятся в распоряжении приложения. Вместо того чтобы создавать и уничтожать потоки для каждой небольшой. . .
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
Взаимодействие Python с REST API
py-thonny 27.03.2025
REST API - это архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Python располагает функциональным набором инструментов для работы с REST API и основная библиотека для. . .
sshd restrictions, ssh access limitations
jigi33 26.03.2025
sshd restrictions | ssh access limitations рестрикции доступа на сервер sshd статья: https:/ / www. golinuxcloud. com/ restrict-allow-ssh-certain-users-groups-rhel
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер