Я не вижу никаких проблем, если вы хотите изменить размер корневого раздела. Вам не нужно убивать разделы.
Прежде всего, вам нужно изменить размер расширенного раздела / dev / mmcblk0p2
. Вы можете сделать это через Gparted
. Затем переместите раздел / dev / mmcblk0p8
в конец диска. В конце измените размер корневого раздела / dev / mmcblk0p7
на все свободное пространство.
Если ваш Gparted
не хотел изменять размер расширенного раздела / dev / mmcblk0p2
(я думаю, потому что он работал внутри этого раздела), у вас есть два пути:
Будьте осторожны при использовании обеих программ. Программа Fdisk не может перемещать разделы и данные внутри них. Не меняйте номер начального сектора загрузочного раздела на / dev / mmcblk0p6
и корневого раздела на / dev / mmcblk0p7
, иначе вы восстановите загрузку установленного Linux.
Если вы выберете первый способ, то вам необходимо запомнить всю информацию обо всех разделах в единицах секторов.Затем удалите раздел mmcblk0p2
. Не записывайте результат на этом этапе, fdisk не сразу применяет изменения. И если вы выйдете из fdisk
или нажмете Ctrl + C, ничего не изменится. Затем создайте расширенный раздел mmcblk0p2
(нажмите n
, затем нажмите e
) со старым номером начального сектора и новым номером последнего сектора. Затем воссоздайте другие логические разделы (нажмите n
, затем нажмите l
) от / dev / mmcblk0p5
до / dev / mmcblk0p8
со старым запуском и номера конечных секторов. Измените типы разделов, нажав кнопку t
. Проверьте (нажмите p
) все разделы будут иметь старые номера начального и конечного секторов и типы, за исключением номера конечного сектора расширенного раздела mmcblk0p2
. Если все в порядке, запишите изменения на диск, нажав кнопку w
. Перезагрузите ваш сервер. Затем вы можете использовать GParted
, чтобы переместить два последних раздела в конец диска и изменить размер корневого раздела.
Дополнения:
Если fdisk не хочет воссоздавать разделы, попробуйте использовать parted:
$ sudo parted /dev/mmcblk0
(parted) unit s
(parted) print
(parted) resizepart 2 -1s
(parted) print
(parted) quit
$ sudo partprobe /dev/mmcblk0
$ sudo gparted /dev/mmcblk0
Удачи! И будьте осторожны.
Добавление в собственный ответ ОП:
При настройке ssmtp
вы также можете запретить или разрешить пользователям определять От кого, а также переопределить домен; вы можете сделать это по нескольким причинам, в том числе из-за того, что сообщение не попадает в папку «Спам».
Вы можете добавить в /etc/ssmtp/ssmtp.conf
:
# Where will the mail seem to come from?
rewriteDomain=my_internet_domain.uk
# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES
Обратите внимание, хотя YES можно использовать в домашней малине, это может быть нецелесообразно в многопользовательской системе из точки зрения безопасности.
Я использую sendEmail для отправки простых автоматических электронных писем через SMTP-сервер внешнего провайдера:
sendEmail -q -f "me@mail.com" -u "mySubject" -t "someone@mail.org" -s "my.smtp.com" -o tls=yes -xu "mySmtpUser" -xp "mySmtpPw" -m "myMessage"
Я передаю все в одной строке, поэтому выполнение этого в командной строке, скорее всего, покажет все параметры (включая smtp-пароль) всем пользователям. , если они запускают ps -ef
, пока я выполняю команду. Я использую его в сценарии оболочки.
Самый простой ответ на отправку однострочных сообщений через gmail — использовать ssmtp
Установите его с помощью следующих команд:
sudo apt-get update
sudo apt-get install ssmtp
Отредактируйте /etc/ssmtp/ssmtp.conf
, чтобы он выглядел следующим образом:
root=rpi3abc@gmail.com
mailhub=smtp.gmail.com:465
FromLineOverride=YES
AuthUser=rpi3abc@gmail.com
AuthPass=testing123
UseTLS=YES
Отправьте однострочник, например:
echo "Testing...1...2...3" | ssmtp myusername@gmail.com
или
printf "Subject: Test\n\nTesting...1...2...3" | ssmtp myusername@gmail.com
Затем, верно для *nix, вы просто получите подсказку обратно через несколько секунд.
Проверьте свой (скрытый) аккаунт, и вуаля, он там!
Это также хорошо работает при отправке файла, например:
cat program.py | ssmtp myotherusername@yahoo.com
И программа появится в почтовом ящике
Если файл является текстовым файлом, он может иметь первую строку, которая гласит Тема : xxxxxx
Это можно использовать с различными заданиями cron, которые могут отправлять мне данные со строками темы, указывающими содержимое.
Это будет работать со всем, что подготавливает сообщение, которое передается в ssmtp через стандартный ввод.
Для получения более подробной информации, такой как защита этих файлов от других пользователей и т. д., посетите эту статью:
Отправка электронной почты из командной строки Raspberry Pi
Не забудьте также просмотреть ниже ответ, опубликованный Руи
о блокировке адреса FROM:
, который при необходимости может быть изменен в отформатированных файлах сообщений.
Если бы я только мог понять, как отправлять SMS таким же образом.
Что не так с "Почта"?
echo "Привет!" | mail -s "Важная почта" (скрыта)
"mail" является /etc/альтернативной ссылкой на /usr/bin/bsd-mailx из пакета bsd-mailx. Я считаю, что он там по умолчанию. Отличная утилита для отправки почты из cron-скриптов, например.
Работает также на Ubuntu и FreeBSD.
Я действительно неравнодушен к использованию mailx
для этого:
echo "Message body." | mailx -s "Subject line" -a /path/attachment.txt -r "Sender's Name<sender@email.com>" -c recipient2@email.com recipient1@email.com
ssmtp
— это всего лишь одна из многих обёрток Sendmail. Все они принимают сообщение на стандартный ввод и, возможно, список адресов в качестве аргументов строки команды -, и все они предлагают двоичный файл с именем sendmail
, который реализует (по крайней мере основные функции )традиционного Команда Sendmail -строка API. Но, собственно говоря, это сообщение должно быть -правильно сформированным сообщением RFC822. Как минимум, он должен иметь заголовок Subject:
.
ssmtp address@example.com <<<$'Subject: testing 1...2...3'
(С ssmtp
sendmail
— это просто символическая ссылка на ssmtp
. Postfix, Exim и я полагаю, что любой другой MTA, который Provides: mail-transport-agent
имеет аналогичную структуру, за исключением, конечно, sendmail
, где двоичный файл sendmail
является "настоящим".)
Чаще всего вы можете объединить простое сообщение электронной почты с документом здесь.
/usr/lib/sendmail -oi -t <<____HERE
Subject: testing
To: recipient@example.net
Here we interpolate the shell variable $result
____HERE
(Опция Sendmail -t
говорит, что нужно брать список получателей из заголовков сообщения, которое вы получаете при стандартном вводе. Точный путь к Sendmail зависит от платформы.)
Другим распространенным вариантом является объединение вывода нескольких команд. Позаботьтесь о том, чтобы между заголовками и телом сообщения была пустая строка ("шея" ).
( printf "Subject: random number\n\n"
dd if=/dev/urandom bs=4 count=1 2>/dev/null | od -D -An ) |
sendmail elsewhere@example.org
Для всего, кроме очень простых текстовых -только сообщений ASCII, вам необходимо понять, как составить правильное сообщение MIME, и в этот момент обычно имеет смысл использовать такой инструмент, как mutt
. Некоторые платформы имеют mail
или mailx
, которые знают, как отправлять вложения и текст, отличный от -ASCII, но это не полностью переносимо.
Проблема здесь не в том, чтобы найти клиент, который может принять сообщение электронной почты и попытаться отправить его, а в том, чтобы настроить его для специфики Gmail.который требует, чтобы MTA знал имя пользователя и пароль для использования для удаленного сервера, чтобы иметь возможность использовать его в качестве исходящего смарт-хоста.
За кулисами большинство клиентов, таких как mutt
, mailx
и т. д., обычно просто запускают sendmail
за кулисами, чтобы получить сообщение из системы.
Мой сервер — CEntOS 7, и на нем есть sendmail, но нет mailx и т. д. Вместо того, чтобы устанавливать новую программу, я протестировал ее непосредственно с помощью sendmail и обнаружил, что это работает:
echo -e "From: you@whatever\nTo: you@gmail.com\nSubject: this is the subject\n\nThis is the body,\nwith multiple lines." | sendmail -t
Для меня это самый простой способ отправить короткое электронное письмо, так как он не требует запуска или настройки сервера или демона и может быть выполнен в одной командной строке.
Идея состоит в том, что сообщение просто предупредит меня о том, что определенная программа выдала ошибку, не раскрывая никакой потенциально конфиденциальной информации, а затем я отправлюсь на сервер по SSH, чтобы проверить его журналы. Таким образом, вам не нужно беспокоиться о таких сложностях, как прикрепление файлов или шифрование транспорта.
Примечания:
-e
приказывает эху интерпретировать '\n' и другие escape-символы. -t
указывает sendmail получать адреса получателей из «Кому :» в заголовке сообщения. tail /var/log/maillog
для просмотра сообщений об ошибках.