Вывод определенной строки файла в *nix
Sunday, 21 Feb 2016При трейсе ошибки установки одного скрипта, возникла необходимость прочесть 98 строку файла. Делается это, ожидаемо, через команду вывода cat
Блог о технологиях, технократии и методиках борьбы с граблями
При трейсе ошибки установки одного скрипта, возникла необходимость прочесть 98 строку файла. Делается это, ожидаемо, через команду вывода cat
Возникла тут необходимость прочекать на хуиз порядка тыщи подсетей, которые я не так давно благополучно выкачал. Ну и по началу я что то затупил и начал чекать через онлайн тулзу NIC.RU, но где к 30IP уже сильно заскучал, т.к провайдеры довольно часто повторялись.
При работе в shell *nic образных систем, имеется возможность просмотреть историю командной строки, что позволяет, к примеру, экономить время при необходимости ввода повторной команды. Тогда стрелками “вверх” ↑ или “вниз” ↓ можно перебрать использованные команды и выбрать их для последующего редактирования или использования.
Иногда приключается ситуация, что надо поднять сервак и передать его в руки чужих умельцев, а вы на нем например тестили закрытие трафа в сопряженные сетки, или не хотите палить процедуру настройки сервера.
Для этого надо обнулить историю шелла, или по крайней мере выкинуть из нее какие то фрагменты. Делается это крайне просто, ибо она хранится в файле .bash_history, который находится в домашней директории пользователя, и в случае всяких настроек- root. Естественно что там она хранится в случае использования bash, а не /sbin/nologin
Так что вариантов два, либо обнулить этот файл
# cat /dev/null > ~/.bash_history
либо открыть его на редактирование и постирать ненужные строки ручками.
В обоих случаях надо будет перелогиниться, чтобы shell очистился, так как данные из него подгружаются при загрузке профайла.
Стал добавлять юзверя в CentOS, ну и что то не могу понять отчего не работает useradd. Не видит его система. А не работает оно потому, что ifconfig я почему то на автомате пишу как /sbin/ifconfig , а вот добавлялку пользователей нет. Иначе бы заметил еще на стадии настройки сети, что не добавлены переменные окружения /sbin /user/sbin и /usr/local/sbin
Для чего открываем файло в корне юзверя ~/.bash_profile и допрописываем в переменные PATH указанные, а также все нужные нам окружения.
Теоретически указанные файлы (.bash_profile) отвечают за конкретного пользователя, то есть если мы пропишем их только Васе и руту, то видеть эти пути будут вася и рут, а все остальные пойдут лесом. Тогда как для всех остальных пользователей системы, если мы по доброте душевной хотим позаботиться и о них, нам следует прописать переменные окружения в файле /etc/profile, где собственно и пропсаны в том числе вышеуказанные пути
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
НО, учитывая что в 99% случаев работать мы будем через ssh, данный вариант нам не подходит, ибо при старте ssh запускается интерактивный шелл, который игнорит переменные описанные в файле /etc/profile и поэтому отрабатываются только переменные домашней директории пользователя ~/.bash_profile
Что то скриптики cron по очистке баз данных почтовика перестали слать свои милые радостные отчетики о проделанной работе, пришлось озадачиться ковыряканием крона по новой.
Наиболее простой способ выяснился после разглядывания подробностей файла /etc/crontab
простая установка директивы MAILTO= в описании основных параметров отправит всю почту на указанный мейл, но в моем случа нужно давать эпизодического пендаля хозяину сервера, чтобы он следил за своей вотчиной, а я за своей, в этой связи обнаружилось два способа:
корявенький, с указанием директивы mailto в поле команды:
3 1 * * * root MAILTO=xxx@odminblog.ru /root/scripts/mailcleaner.sh
и на мой взгляд более корректный с перенаправлением вывода исполнения скрипта:
3 1 * * * root /root/scripts/mailcleaner.sh 2>&1 | mail -s “Mail base cleaning” xxx@odminblog.ru
, также можно перенаправить вывод выполнения скрипта в лог файл:
3 1 * * * root /root/scripts/mailcleaner.sh >> /var/log/cron.log 2>&1