#!/bin/bash
set -euo pipefail
Опция -e останавливает скрипт если процесс вернул не 0 (и пишет в stderr на какой строке ошибка).
Опция -u останавливает скрипт, если используется неопределённая переменная.
Опция -o pipefail фейлит выполнение пайпа, если один из подкомпонентов выполняется с ошибкой.
Показаны сообщения с ярлыком bash. Показать все сообщения
Показаны сообщения с ярлыком bash. Показать все сообщения
Отправка e-mail писем с вложениями из консоли
Чтобы отослать электронное письмо из командной строки, можно воспользоваться утилитой mail. Также она может встречаться под названием mailx или Mail. Для отправки письма пишем следующую команду:
$ mail -s "Тема письма" pupkin@mail.ru
Привет!
Я пишу тебе из консоли!
Ctrl+D
Комбинация клавиш Ctrl+D (^D) с новой строки позволяет завершить ввод письма. После этого у меня появляется приглашение ввести получателя копии - просто жму "Enter", и письмо отправляется.
Если тело письма находится в файле, то можно просто воспользоваться перенаправлением входного потока:
$ mail -s "Письмо из файла" pupkin@mail.ru
Аналогично поступаем, если требуется отослать вывод какой-либо команды. Например, следующая команда отошлет мне на мыло содержание текущего каталога:
$ ls | mail -s "Вывод команды" pupkin@mail.ru
Кроме того, утилита позволяет не только читать письма, но и получать их, отвечать и делать прочие полезные манипуляции. Но вот чего она, похоже, не позволяет - так это добавить вложение к письму. Однако, это не беда. Есть немало способов отправить файл из консоли по электронной почте. Я рассмотрю три из них, которые не потребовали от меня разбираться в чем-то или что-то скачивать/устанавливать.
1. Если нужно отправить двоичный файл письмом, можно его просто закодировать с помощью uuencode. Команда будет выглядет следующим образом:
$ uuencode image.jpg image.jpg | mail -s "Метод 1" sombeody@somewhere.net
И хотя файл действительно закодируется и отправится, это не является вложением в полном смысле электронной почты. некоторые почтовые клиенты адэкватно отреагируют на файл в письме, другие же покажут его как простой текст, и раскодировать его придется вручную.
2. С помощью консольной утилиты mpack. Эта утилита пакует файл в сообщение и отсылает полученное сообщение туда, куда изволите.
$ mpack -s "Метод 2" image.jpg sombeody@somewhere.net
3. С помощью полноценного консольного почтового клиента mutt. Можно запустить его, сформировать письмо и отправить куда надо. А можно запустить mutt в режиме эмуляции диалога mailx (параметр -x), при этом передав через параметры все необходимое, чтобы не получать лишних вопросов от этой программы. Второй вариант выглядит так:
$ echo "Смотри вложение" | mutt -x -s "Метод 3" -a image.jpg sombeody@somewhere.net
$ mail -s "Тема письма" pupkin@mail.ru
Привет!
Я пишу тебе из консоли!
Ctrl+D
Комбинация клавиш Ctrl+D (^D) с новой строки позволяет завершить ввод письма. После этого у меня появляется приглашение ввести получателя копии - просто жму "Enter", и письмо отправляется.
Если тело письма находится в файле, то можно просто воспользоваться перенаправлением входного потока:
$ mail -s "Письмо из файла" pupkin@mail.ru
Аналогично поступаем, если требуется отослать вывод какой-либо команды. Например, следующая команда отошлет мне на мыло содержание текущего каталога:
$ ls | mail -s "Вывод команды" pupkin@mail.ru
Кроме того, утилита позволяет не только читать письма, но и получать их, отвечать и делать прочие полезные манипуляции. Но вот чего она, похоже, не позволяет - так это добавить вложение к письму. Однако, это не беда. Есть немало способов отправить файл из консоли по электронной почте. Я рассмотрю три из них, которые не потребовали от меня разбираться в чем-то или что-то скачивать/устанавливать.
1. Если нужно отправить двоичный файл письмом, можно его просто закодировать с помощью uuencode. Команда будет выглядет следующим образом:
$ uuencode image.jpg image.jpg | mail -s "Метод 1" sombeody@somewhere.net
И хотя файл действительно закодируется и отправится, это не является вложением в полном смысле электронной почты. некоторые почтовые клиенты адэкватно отреагируют на файл в письме, другие же покажут его как простой текст, и раскодировать его придется вручную.
2. С помощью консольной утилиты mpack. Эта утилита пакует файл в сообщение и отсылает полученное сообщение туда, куда изволите.
$ mpack -s "Метод 2" image.jpg sombeody@somewhere.net
3. С помощью полноценного консольного почтового клиента mutt. Можно запустить его, сформировать письмо и отправить куда надо. А можно запустить mutt в режиме эмуляции диалога mailx (параметр -x), при этом передав через параметры все необходимое, чтобы не получать лишних вопросов от этой программы. Второй вариант выглядит так:
$ echo "Смотри вложение" | mutt -x -s "Метод 3" -a image.jpg sombeody@somewhere.net
Проверка условий в скриптах
права доступа к файлу
test условие "файл"
[ условие "файл"]
-d Каталог
-f Обычный файл
-L Символическая ссылка
-r Файл для чтения
-s Файл существует и имеет ненулевой размер
-w Файл для записей
-e Файл существует
-u Файл имеет установленный бит suid
-x Исполняемый файл
test условие "файл"
[ условие "файл"]
-d Каталог
-f Обычный файл
-L Символическая ссылка
-r Файл для чтения
-s Файл существует и имеет ненулевой размер
-w Файл для записей
-e Файл существует
-u Файл имеет установленный бит suid
-x Исполняемый файл
Проверка строк
test "строка"
test оператор "строка"
test "строка" оператор "строка"
[оператор "строка"]
["строка" оператор "строка"]
= Две строки равны
! = Две строки не равны
-z Строка нулевая
-n Строка не нулевая
Проверка чисел
"число" оператор "число"
["число" оператор "число"]
-eq Два числа равны
-ne Два числа не равны
-gt Первое число больше второго
-lt Первое число меньше второго
-le Первое число меньше или равно второму
-ge Первое число больше либо равно второго
Подписаться на:
Сообщения (Atom)