<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Записки Плюшевого Крыса</title>
	<atom:link href="http://rat.admin.lv/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://rat.admin.lv</link>
	<description>Крыс о пингвинах, и не только</description>
	<lastBuildDate>
	Sat, 13 Mar 2021 19:19:51 +0000	</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.1.8</generator>
	<item>
		<title>Shrinkpfd &#8211; отличный скриптик оптимизации сканированных PDF</title>
		<link>http://rat.admin.lv/?p=1428</link>
				<comments>http://rat.admin.lv/?p=1428#respond</comments>
				<pubDate>Mon, 11 May 2020 16:35:26 +0000</pubDate>
		<dc:creator><![CDATA[Плюшевый Крыс]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[ghostscript]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[shrinkpdf]]></category>

		<guid isPermaLink="false">http://rat.admin.lv/?p=1428</guid>
				<description><![CDATA[Отсканированный документ в формате PDF может занимать неприлично много места, особенно если документ был отсканирван с разрешением выше требуемого, например 600dpi для офисного документа. Скрипт позволяет поправить разрешение картинок внутри. Например: $ ./shrinkpdf.sh input.pdf output.pdf 150 Требуется GhostScript. $ sudo apt update $ sudo apt install ghostscript Скрипт: shrinkpdf.sh Страница разработчика: Shrinkpdf: shrink PDF files [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>Отсканированный документ в формате PDF может занимать неприлично много места, особенно если документ был отсканирван с разрешением выше требуемого, например 600dpi для офисного документа. Скрипт позволяет поправить разрешение картинок внутри.</p>
<p>Например:<br />
<code>$ ./shrinkpdf.sh input.pdf output.pdf 150</code></p>
<p>Требуется GhostScript.<br />
<code>$ sudo apt update<br />
$ sudo apt install ghostscript</code></p>
<p>Скрипт: <a href="http://rat.admin.lv/wp-content/uploads/2020/05/shrinkpdf.sh">shrinkpdf.sh</a></p>
<p>Страница разработчика: <a href="http://www.alfredklomp.com/programming/shrinkpdf/" rel="noopener" target="_blank">Shrinkpdf: shrink PDF files with Ghostscript</a></p>
]]></content:encoded>
							<wfw:commentRss>http://rat.admin.lv/?feed=rss2&#038;p=1428</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Как клонировать систему на диск меньшего размера (Linux, dd)</title>
		<link>http://rat.admin.lv/?p=1419</link>
				<comments>http://rat.admin.lv/?p=1419#respond</comments>
				<pubDate>Tue, 05 May 2020 09:24:11 +0000</pubDate>
		<dc:creator><![CDATA[Плюшевый Крыс]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Железо]]></category>
		<category><![CDATA[dd]]></category>
		<category><![CDATA[EaseUS Partition Master]]></category>
		<category><![CDATA[fdisk]]></category>
		<category><![CDATA[sgdisk]]></category>

		<guid isPermaLink="false">http://rat.admin.lv/?p=1419</guid>
				<description><![CDATA[Итак, имеем компьютер под управлением MS Windows 10 с механическим HDD, который хотим заменить на SSD, но меньшего размера. С помощью либо встроенного в систему Disk Manager&#8217;а, либо с помощью сторонних утилит вроде EaseUS Partition Master удалось уменьшить и переместить разделы на диске так, чтобы они поместились и на новом диске тоже. А вот клонирование [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>Итак, имеем компьютер под управлением MS Windows 10 с механическим HDD, который хотим заменить на SSD, но меньшего размера. С помощью либо встроенного в систему Disk Manager&#8217;а, либо с помощью сторонних утилит вроде <a href="https://www.easeus.com/partition-manager/" rel="noopener" target="_blank">EaseUS Partition Master</a> удалось уменьшить и переместить разделы на диске так, чтобы они поместились и на новом диске тоже. А вот клонирование под Windows вызывает вопросы &#8211; либо система не грузится после &#8220;успешного клонирования&#8221;, либо функциональность присутствует только в платной версии утилиты, как у EPM. Клонирование dd &#8220;в лоб&#8221; не дает рабочий диск, Windows не грузится.<br />
Грузимся с загрузочной USB-флешки Linux Live CD (дистрибутив по вкусу, я использовал Ubuntu 20.04 LTS, с поддержкой загрузки по <a href="https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface" rel="noopener" target="_blank">UEFI</a>). Новый диск тоже подключен по USB.</p>
<p>Предположим, что основной диск (HDD) /dev/sda, конечный (SSD) &#8211; /dev/sdb.<br />
Разобраться с подключенными устройствами позволяет lsblk:<br />
<code>$ lsblk</code><br />
На всякий случай сохраним GPT:<br />
<code>$ sudo sgdisk -b=gpt.bak.bin /dev/sda</code><br />
Скопируем таблицу на конечный диск:<br />
<code>$ sudo sgdisk -R=/dev/sdb /dev/sda</code><br />
Проверим соответствие таблиц на обоих дисках:<br />
<code>$ sudo fdisk -l</code><br />
Теперь клонируем все разделы:<br />
<code>$ sudo dd if=/dev/sda1 of=/dev/sdb1 bs=1M<br />
$ sudo dd if=/dev/sda2 of=/dev/sdb2 bs=1M<br />
$ sudo dd if=/dev/sda3 of=/dev/sdb3 bs=1M</code></p>
<p>Информация отсюда:<a href="https://unix.stackexchange.com/questions/161859" rel="noopener" target="_blank">&#8220;Can &#8216;dd&#8217; be used to clone to a smaller HDD, knowing that partitions will need editing?&#8221;</a></p>
]]></content:encoded>
							<wfw:commentRss>http://rat.admin.lv/?feed=rss2&#038;p=1419</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Ubuntu: не работает WiFi на чипе Broadcom BCM4311</title>
		<link>http://rat.admin.lv/?p=1387</link>
				<comments>http://rat.admin.lv/?p=1387#respond</comments>
				<pubDate>Fri, 04 Oct 2019 17:21:45 +0000</pubDate>
		<dc:creator><![CDATA[Плюшевый Крыс]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[BCM4311]]></category>
		<category><![CDATA[Broadcom]]></category>
		<category><![CDATA[Lubuntu]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://rat.admin.lv/?p=1387</guid>
				<description><![CDATA[На оживленном антикварном нетбуке Samsung NC-10 не захотел работать Wifi на базе Broadcom BCM4311. Вроде и драйвер есть, и все включено, но не работает: $ dmesg -T &#124; grep b43 [Fri Oct 4 18:33:18 2019] b43-phy0: Broadcom 4311 WLAN found (core revision 10) [Fri Oct 4 18:33:18 2019] b43-phy0: Found PHY: Analog 4, Type 2 [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>На оживленном антикварном нетбуке Samsung NC-10 не захотел работать Wifi на базе Broadcom BCM4311. Вроде и драйвер есть, и все включено, но не работает:<br />
<code>$ dmesg -T | grep b43<br />
[Fri Oct  4 18:33:18 2019] b43-phy0: Broadcom 4311 WLAN found (core revision 10)<br />
[Fri Oct  4 18:33:18 2019] b43-phy0: Found PHY: Analog 4, Type 2 (G), Revision 8<br />
[Fri Oct  4 18:33:18 2019] b43-phy0: Found Radio: Manuf 0x17F, ID 0x2050, Revision 2, Ver 0<br />
[Fri Oct  4 18:33:20 2019] b43-phy0: Loading firmware version 666.2 (2011-02-23 01:15:07)</code></p>
<p>И под Ubuntu 16.04, и под Lubuntu 18.04.</p>
<p><code>$ rfkill list all<br />
0: hci0: Bluetooth<br />
	Soft blocked: no<br />
	Hard blocked: no<br />
1: samsung-wlan: Wireless LAN<br />
	Soft blocked: no<br />
	Hard blocked: no<br />
2: phy0: Wireless LAN<br />
	Soft blocked: no<br />
	Hard blocked: no</code></p>
<p>Оказывается, драйвера неправильные.</p>
<p><code>$ sudo apt-get purge bcmwl-kernel-source<br />
$ sudo apt-get install firmware-b43-installer</code></p>
<p>После перезагрузки все заработает.</p>
]]></content:encoded>
							<wfw:commentRss>http://rat.admin.lv/?feed=rss2&#038;p=1387</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Автоматическое резервное копирование баз PostgreSQL</title>
		<link>http://rat.admin.lv/?p=1363</link>
				<comments>http://rat.admin.lv/?p=1363#respond</comments>
				<pubDate>Sat, 10 Aug 2019 21:46:58 +0000</pubDate>
		<dc:creator><![CDATA[Плюшевый Крыс]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[pgpass]]></category>
		<category><![CDATA[pg_dump]]></category>
		<category><![CDATA[Postgres]]></category>
		<category><![CDATA[PostgreSQL]]></category>

		<guid isPermaLink="false">http://rat.admin.lv/?p=1363</guid>
				<description><![CDATA[Есть удаленный доступ к серверы с базами данных PostgreSQL, надо делать их локальные дампы. Потом другой хост забирает данные по rsync и сам уже следит за удалением устаревших. Для MySQL работает хорошо. С Postgres&#8217;ом есть свои нюансы. Чтобы не светить логины и пароли к базе при вызове команды pg_dump, они прописываются в специальном файлике ~/.pgpass: [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>Есть удаленный доступ к серверы с базами данных <a href="https://www.postgresql.org">PostgreSQL</a>, надо делать их локальные дампы. Потом другой хост забирает данные по rsync и сам уже следит за удалением устаревших. Для MySQL <a href="http://rat.admin.lv/?p=1141">работает хорошо</a>. С Postgres&#8217;ом есть свои нюансы.<br />
Чтобы не светить логины и пароли к базе при вызове команды pg_dump, они прописываются в специальном файлике ~/.pgpass:<br />
<code>#hostname:port:database:username:password<br />
localhost:5432:database1:username1:strongpassword<br />
localhost:5432:database2:username2:strongpassword</code></p>
<p>Права на файл:<br />
<code>$ chmod 600 ~/.pgpass</code></p>
<p>Вызов команд из crontab:<br />
<code>50 0 * * * /usr/bin/pg_dump --no-password -U username1 -h localhost database1 > /home/username/backup/database1.`date +\%Y-\%m-\%dT\%H:\%M:\%S`.pgsql</code><br />
<code>55 0 * * * /usr/bin/pg_dump --no-password -U username2 -h localhost database2 > /home/username/backup/database2.`date +\%Y-\%m-\%dT\%H:\%M:\%S`.pgsql</code></p>
<p>Если не указать хост, pg_dump выдаст ошибку и дамп создан не будет.</p>
<p>Бекап-сервер потом все забирает такой командой:<br />
<code>30 1 * * *  /usr/bin/rsync -avz --remove-source-files -e "/usr/bin/ssh" username@server.domain.tld:backup/ /var/backup/server.db > /dev/null 2>&1</code></p>
<p>Разумеется, на удаленном сервере должны быть установлены OpenSSH и rsync, настроена авторизация по ключу.</p>
<p>Полезная статья по резервному копированию и восстановлению PostgreSQL: <a href="https://www.digitalocean.com/community/tutorials/how-to-backup-postgresql-databases-on-an-ubuntu-vps" rel="noopener" target="_blank">&#8220;How To Backup PostgreSQL Databases on an Ubuntu VPS&#8221;</a></p>
]]></content:encoded>
							<wfw:commentRss>http://rat.admin.lv/?feed=rss2&#038;p=1363</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Как настроить Active Directory на Samba 4 на Ubuntu</title>
		<link>http://rat.admin.lv/?p=1350</link>
				<comments>http://rat.admin.lv/?p=1350#respond</comments>
				<pubDate>Thu, 18 Jul 2019 18:47:06 +0000</pubDate>
		<dc:creator><![CDATA[Плюшевый Крыс]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[AD]]></category>
		<category><![CDATA[iRedMail]]></category>
		<category><![CDATA[Samba]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://rat.admin.lv/?p=1350</guid>
				<description><![CDATA[Начиная с 4 версии, Samba уже вполне подходит для развертывания структуры Active Directory в небольших компаниях. Хороший цикл статей на английском по настройке инфраструктуры AD при помощи Samba 4: Part 1: Install Active Directory Infrastructure with SAMBA4 on Ubuntu Part 2: Manage Samba4 AD Infrastructure from Linux Command Line Part 3: Manage Samba4 Active Directory [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>Начиная с 4 версии, <a href="https://www.samba.org" rel="noopener" target="_blank">Samba</a> уже вполне подходит для развертывания структуры <a href="https://ru.wikipedia.org/wiki/Active_Directory" rel="noopener" target="_blank">Active Directory</a> в небольших компаниях.<br />
Хороший цикл статей на английском по настройке инфраструктуры AD при помощи Samba 4:<br />
<a href="https://www.tecmint.com/install-samba4-active-directory-ubuntu" rel="noopener" target="_blank">Part 1: Install Active Directory Infrastructure with SAMBA4 on Ubuntu</a><br />
<a href="https://www.tecmint.com/manage-samba4-active-directory-linux-command-line" rel="noopener" target="_blank">Part 2: Manage Samba4 AD Infrastructure from Linux Command Line</a><br />
<a href="https://www.tecmint.com/manage-samba4-ad-from-windows-via-rsat/" rel="noopener" target="_blank">Part 3: Manage Samba4 Active Directory Infrastructure from Windows10 via RSAT</a><br />
<a href="https://www.tecmint.com/manage-samba4-dns-group-policy-from-windows/" rel="noopener" target="_blank">Part 4: Manage Samba4 AD Domain Controller DNS and Group Policy from Windows</a><br />
<a href="https://www.tecmint.com/join-additional-ubuntu-dc-to-samba4-ad-dc-failover-replication/" rel="noopener" target="_blank">Part 5: Join an Additional Ubuntu DC to Samba4 AD DC</a><br />
<a href="https://www.tecmint.com/samba4-ad-dc-sysvol-replication/" rel="noopener" target="_blank">Part 6: Setup SysVol Replication Across Two Samba4 AD DC with Rsync</a><br />
<a href="https://www.tecmint.com/create-shared-directory-on-samba-ad-dc-and-map-to-windows-linux/" rel="noopener" target="_blank">Part 7: Create a Shared Directory on Samba AD DC and Map to Windows/Linux Clients</a><br />
<a href="https://www.tecmint.com/join-ubuntu-to-active-directory-domain-member-samba-winbind/" rel="noopener" target="_blank">Part 8: Integrate Ubuntu 16.04 to AD as a Domain Member with Samba and Winbind</a><br />
<a href="https://www.tecmint.com/join-centos-7-to-samba4-active-directory/" rel="noopener" target="_blank">Part 9: Integrate CentOS 7 Desktop to Samba4 AD as a Domain Member</a><br />
<a href="https://www.tecmint.com/install-iredmail-on-centos-7-for-samba4-ad-integration/" rel="noopener" target="_blank">Part 10: How to Install iRedMail on CentOS 7 for Samba4 AD Integration</a><br />
<a href="https://www.tecmint.com/integrate-iredmail-to-samba4-ad-dc-on-centos-7/" rel="noopener" target="_blank">Part 11: Integrate iRedMail Services to Samba4 AD DC</a><br />
<a href="https://www.tecmint.com/integrate-iredmail-roundcube-with-samba4-ad-dc/" rel="noopener" target="_blank">Part 12: How to Integrate iRedMail Roundcube with Samba4 AD DC</a><br />
<a href="https://www.tecmint.com/configure-thunderbird-with-iredmail-for-samba4-ad-ldap/" rel="noopener" target="_blank">Part 13: How to Configure Thunderbird with iRedMail for Samba4 AD</a><br />
<a href="https://www.tecmint.com/integrate-ubuntu-to-samba4-ad-dc-with-sssd-and-realm/" rel="noopener" target="_blank">Part 14: Integrate Ubuntu 16.04 to Samba4 AD DC with SSSD and Realm</a><br />
<a href="https://www.tecmint.com/integrate-centos-7-to-samba4-active-directory/" rel="noopener" target="_blank">Part 15: Integrate CentOS 7 from Command Line to Samba AD DC as a Domain Member</a><br />
<a href="https://www.tecmint.com/integrate-vmware-esxi-to-samba4-domain/" rel="noopener" target="_blank">Part 16: Integrate VMware ESXI Host to Samba4 AD Domain Controller</a></p>
]]></content:encoded>
							<wfw:commentRss>http://rat.admin.lv/?feed=rss2&#038;p=1350</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Microsoft Excel. Узелки на память</title>
		<link>http://rat.admin.lv/?p=1345</link>
				<comments>http://rat.admin.lv/?p=1345#respond</comments>
				<pubDate>Wed, 17 Jul 2019 06:13:29 +0000</pubDate>
		<dc:creator><![CDATA[Плюшевый Крыс]]></dc:creator>
				<category><![CDATA[Office]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[CSV]]></category>
		<category><![CDATA[Excel]]></category>

		<guid isPermaLink="false">http://rat.admin.lv/?p=1345</guid>
				<description><![CDATA[1. Чтобы MS Excel корректно использовал сепараторы в CSV, надо в первой строке CSV указать сепаратор директивой &#8220;sep=,&#8221;]]></description>
								<content:encoded><![CDATA[<p>1. Чтобы MS Excel корректно использовал сепараторы в CSV, надо в первой строке CSV указать сепаратор директивой &#8220;sep=,&#8221;</p>
]]></content:encoded>
							<wfw:commentRss>http://rat.admin.lv/?feed=rss2&#038;p=1345</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Как восстановить работу директорий пользователей в Confluence</title>
		<link>http://rat.admin.lv/?p=1338</link>
				<comments>http://rat.admin.lv/?p=1338#respond</comments>
				<pubDate>Sun, 14 Jul 2019 19:59:00 +0000</pubDate>
		<dc:creator><![CDATA[Плюшевый Крыс]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[Atlassian]]></category>
		<category><![CDATA[Confluence]]></category>
		<category><![CDATA[JIRA]]></category>
		<category><![CDATA[Postgres]]></category>

		<guid isPermaLink="false">http://rat.admin.lv/?p=1338</guid>
				<description><![CDATA[Имеем свеженастроенную пару JIRA 8.2 + Confluence 6.15. В Confluence пользователи должны браться из директории пользователей JIRA, но из-за неправильной настройки никто залогиниться не может. Имеем криворукого админа (меня то есть), который неловким движением руки отключил внутреннюю директорию Confluence, где, разумеется, и были все пользователи с админскими правами. Картинка &#8220;Приехали&#8221;. Чинится проблема редактированием доступа к [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>Имеем свеженастроенную пару JIRA 8.2 + Confluence 6.15. В Confluence пользователи должны браться из директории пользователей JIRA, но из-за неправильной настройки никто залогиниться не может. Имеем криворукого админа (меня то есть), который неловким движением руки отключил внутреннюю директорию Confluence, где, разумеется, и были все пользователи с админскими правами. Картинка &#8220;Приехали&#8221;.</p>
<p>Чинится проблема редактированием доступа к директориям пользователей напрямую в базе Posgtres:</p>
<pre>rat@atlassian:~$ sudo -u postgres psql
[sudo] password for rat: 
psql (9.5.17)
Type "help" for help.
postgres=# \list
                                   List of databases
    Name    |   Owner    | Encoding |   Collate   |    Ctype    |   Access privileges   
------------+------------+----------+-------------+-------------+-----------------------
 confluence | confluence | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 jira       | jira       | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 postgres   | postgres   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 

postgres=# \connect confluence
You are now connected to database "confluence" as user "postgres".
confluence=# select id, directory_name, active from cwd_directory;
   id    |        directory_name         | active 
---------+-------------------------------+--------
  294913 | Confluence Internal Directory | <span style="color: #ff0000;">F</span>
 1736705 | JIRA Server                   | T
(2 rows)

confluence=# update cwd_directory set active='T' where id=294913;
UPDATE 1

confluence=# select id, directory_name, active from cwd_directory;
   id    |        directory_name         | active 
---------+-------------------------------+--------
 1736705 | JIRA Server                   | T
  294913 | Confluence Internal Directory | T
(2 rows)

confluence=# \quit</pre>
<p>Осталось перезапустить Confluence и правильно настроить директории пользователей.</p>
]]></content:encoded>
							<wfw:commentRss>http://rat.admin.lv/?feed=rss2&#038;p=1338</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Доступ к удаленному FTPS-серверу в пакетном режиме</title>
		<link>http://rat.admin.lv/?p=1303</link>
				<comments>http://rat.admin.lv/?p=1303#respond</comments>
				<pubDate>Tue, 02 Jul 2019 07:24:41 +0000</pubDate>
		<dc:creator><![CDATA[Плюшевый Крыс]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[.netrc]]></category>
		<category><![CDATA[ftps]]></category>
		<category><![CDATA[lftp]]></category>
		<category><![CDATA[SSL]]></category>

		<guid isPermaLink="false">http://rat.admin.lv/?p=1303</guid>
				<description><![CDATA[Для коммуникации с ftps-сервером хорошо подходит утилита lftp, которая поддерживает SSL в отличие от стандартной утилиты ftp. Есть поддержка считывания данных из ~/.netrc, так что в скриптах логин и пароль светить не придется. Вызов работы из скрипта выглядит примерно так (Ubuntu Linux -> Microsoft FTP Server): /usr/bin/lftp -e "set ftp:passive-mode off; set ftp:ssl-protect-data true; set [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>Для коммуникации с ftps-сервером хорошо подходит утилита lftp, которая поддерживает SSL в отличие от стандартной утилиты ftp. Есть поддержка считывания данных из ~/.netrc, так что в скриптах логин и пароль светить не придется.<br />
Вызов работы из скрипта выглядит примерно так (Ubuntu Linux -> Microsoft FTP Server):</p>
<pre>/usr/bin/lftp -e "set ftp:passive-mode off;
                  set ftp:ssl-protect-data true;
                  set ftp:ssl-force true;
                  set ssl:verify-certificate no;
                  lcd /data/processing/out;
                  cd /;
                  mput *;
                  bye" ftps.domain.tld</pre>
]]></content:encoded>
							<wfw:commentRss>http://rat.admin.lv/?feed=rss2&#038;p=1303</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Установка NextCloud на Ubuntu 16.04 (Apache2, MariaDB)</title>
		<link>http://rat.admin.lv/?p=1314</link>
				<comments>http://rat.admin.lv/?p=1314#respond</comments>
				<pubDate>Mon, 24 Jun 2019 17:03:17 +0000</pubDate>
		<dc:creator><![CDATA[Плюшевый Крыс]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[Apache2]]></category>
		<category><![CDATA[APCu]]></category>
		<category><![CDATA[LXC]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[NextCloud]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://rat.admin.lv/?p=1314</guid>
				<description><![CDATA[Для небольшой компании установил NextCloud в качестве точки обмена со сторонней бухгалтерией и бизнес-партнерами. До этого они обменивались документами по электронной почте, что, учитывая требования GDPR, создавало сложности. Установка почти полностью делалась по статье &#8220;Install NextCloud On Ubuntu 16.04 LTS With Apache2, MariaDB, PHP 7.1 And Let’s Encrypt SSL/TLS&#8221;, за мелкими исключениями. В моем случае [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>Для небольшой компании установил <a href="https://nextcloud.com" target="_blank" rel="noopener noreferrer">NextCloud</a> в качестве точки обмена со сторонней бухгалтерией и бизнес-партнерами. До этого они <a href="http://rat.admin.lv/?p=1192" target="_blank" rel="noopener noreferrer">обменивались документами по электронной почте</a>, что, учитывая требования <a href="https://gdpr-info.eu" target="_blank" rel="noopener noreferrer">GDPR</a>, создавало сложности.<br />
Установка почти полностью делалась по статье &#8220;<a href="https://websiteforstudents.com/install-nextcloud-on-ubuntu-16-04-lts-with-apache2-mariadb-php-7-1-and-lets-encrypt-ssl-tls/" target="_blank" rel="noopener noreferrer">Install NextCloud On Ubuntu 16.04 LTS With Apache2, MariaDB, PHP 7.1 And Let’s Encrypt SSL/TLS&#8221;</a>, за мелкими исключениями.<br />
В моем случае сервер находится на нестандартном порту (порт прокидывается за NAT, 8443->443), поэтому использовать сертификат <a href="https://letsencrypt.org" target="_blank" rel="noopener noreferrer">Let&#8217;s Encrypt</a> не получится, для запроса сертификата веб-сайт должен быть доступен извне по портам 80/tcp и 443/tcp. Использовался самоподписанный сертификат SSL/TLS.<br />
В сети много инструкций по настройке NextCloud в связке с <a href="http://nginx.org" target="_blank" rel="noopener noreferrer">Nginx</a>, но я несколько недолюбливаю этот отличный веб-сервер за его головоломные файлы конфигурации.<br />
Сам сервер развернут в виде <a href="https://linuxcontainers.org/ru/" target="_blank" rel="noopener noreferrer">LXC</a>-контейнера для повышения уровня изоляции данных. В качестве базы данных &#8211; <a href="https://mariadb.org" target="_blank" rel="noopener noreferrer">MariaDB</a>.</p>
<p><code>$ sudo apt-get update &amp;&amp; sudo apt-get upgrade<br />
$ sudo apt-get install apache2</code></p>
<p>Сразу отключим листинг директорий:<br />
<code>$ sudo sed -i "s/Options Indexes FollowSymLinks/Options FollowSymLinks/" /etc/apache2/apache2.conf<br />
$ sudo systemctl stop apache2.service<br />
$ sudo systemctl start apache2.service<br />
$ sudo systemctl enable apache2.service</code></p>
<p>База данных:<br />
<code>$ sudo apt-get install mariadb-server mariadb-client<br />
$ sudo mysql_secure_installation</code><br />
When prompted, answer the questions below by following the guide.</p>
<p>Enter current password for root (enter for none): Just press the Enter<br />
Set root password? [Y/n]: Y<br />
New password: Enter password<br />
Re-enter new password: Repeat password<br />
Remove anonymous users? [Y/n]: Y<br />
Disallow root login remotely? [Y/n]: Y<br />
Remove test database and access to it? [Y/n]: Y<br />
Reload privilege tables now? [Y/n]: Y</p>
<p>Рестартуем сервер MariaDB:<br />
<code>$ sudo systemctl restart mysql.service</code></p>
<p>PHP 7.1 не входит в поставку Ubuntu 16.04, ставим из стороннего репозитория:<br />
<code>$ sudo apt-get install software-properties-common<br />
$ sudo add-apt-repository ppa:ondrej/php<br />
$ sudo apt-get update<br />
$ sudo apt-get install php7.1 libapache2-mod-php7.1 php7.1-common libapache2-mod-php7.1 php7.1-mbstring php7.1-xmlrpc php7.1-soap php-apcu php-smbclient php7.1-ldap php-redis php7.1-gd php7.1-xml php7.1-intl php7.1-json php-imagick php7.1-mysql php7.1-cli php7.1-mcrypt php7.1-ldap php7.1-zip php7.1-curl</code></p>
<p>Немного правим дефолтные параметры PHP-FPM:<br />
<code>$ sudo vim /etc/php/7.1/apache2/php.ini<br />
file_uploads = On<br />
allow_url_fopen = On<br />
memory_limit = 512M<br />
upload_max_filesize = 256M<br />
max_execution_time = 360<br />
date.timezone = Europe/Riga</code></p>
<p>Настройка базы:<br />
<code>$ sudo mysql -u root -p</code><br />
<code>CREATE DATABASE nextcloud;<br />
CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'new_password_here';<br />
GRANT ALL ON nextcloud.* TO 'nextclouduser'@'localhost' IDENTIFIED BY 'user_password_here' WITH GRANT OPTION;<br />
FLUSH PRIVILEGES;<br />
EXIT;</code></p>
<p>Скачиваем и устанавливаем NextCloud:<br />
<code>$ wget https://download.nextcloud.com/server/releases/latest.zip<br />
$ unzip latest.zip<br />
$ sudo mv nextcloud /var/www/html/nextcloud/<br />
$ sudo chown -R www-data:www-data /var/www/html/nextcloud/<br />
$ sudo chmod -R 755 /var/www/html/nextcloud/</code></p>
<p>Конфиг нового виртуального хоста, нужен только для начальной отладки:<br />
<code>$ sudo vim /etc/apache2/sites-available/nextcloud.conf</code><br />
<code><br />
&lt;VirtualHost *:80&gt;<br />
     ServerAdmin admin@domain.tld<br />
     DocumentRoot /var/www/html/nextcloud/<br />
     ServerName office.domain.tld<br />
     ServerAlias doc.domain.tld<br />
     Alias /nextcloud "/var/www/html/nextcloud/"<br />
     &lt;Directory /var/www/html/nextcloud/&gt;<br />
        Options +FollowSymlinks<br />
        AllowOverride All<br />
        Require all granted<br />
          &lt;IfModule mod_dav.c&gt;<br />
            Dav off<br />
          &lt;/IfModule&gt;<br />
        SetEnv HOME /var/www/html/nextcloud<br />
        SetEnv HTTP_HOME /var/www/html/nextcloud<br />
     &lt;/Directory&gt;<br />
     ErrorLog ${APACHE_LOG_DIR}/error.log<br />
     CustomLog ${APACHE_LOG_DIR}/access.log combined<br />
&lt;/VirtualHost&gt;<br />
</code></p>
<p>Включим необходимые модули и рестартуем Apache:<br />
<code>$ sudo a2ensite nextcloud.conf<br />
$ sudo a2enmod rewrite<br />
$ sudo a2enmod headers<br />
$ sudo a2enmod env<br />
$ sudo a2enmod dir<br />
$ sudo a2enmod mime<br />
$ sudo systemctl restart apache2.service</code></p>
<p>Генерируем сертификат RSA со сроком 10 лет:<br />
<code>$ sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt<br />
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048</code><br />
Подробная информация по параметрам в статье на <a href="https://www.digitalocean.com" rel="noopener noreferrer" target="_blank">Digital Ocean</a>: <a href="https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-16-04" rel="noopener noreferrer" target="_blank">&#8220;How To Create a Self-Signed SSL Certificate for Apache in Ubuntu 16.04&#8221;</a>.</p>
<p>Создаем рабочий конфиг виртуального хоста:<br />
<code>$ sudo vim /etc/apache2/sites-available/nextcloud-le-ssl.conf</code><br />
<code><br />
&lt;IfModule mod_ssl.c&gt;<br />
&lt;VirtualHost *:443&gt;<br />
     ServerAdmin admin@domain.tld<br />
     DocumentRoot /var/www/html/nextcloud/<br />
     ServerName office.domain.tld<br />
     ServerAlias doc.domain.tld</p>
<p>     Alias /nextcloud "/var/www/html/nextcloud/"</p>
<p>     &lt;Directory /var/www/html/nextcloud/&gt;<br />
        Options +FollowSymlinks<br />
        AllowOverride All<br />
        Require all granted<br />
          &lt;IfModule mod_dav.c&gt;<br />
            Dav off<br />
          &lt;/IfModule&gt;<br />
        SetEnv HOME /var/www/html/nextcloud<br />
        SetEnv HTTP_HOME /var/www/html/nextcloud<br />
     &lt;/Directory&gt;</p>
<p>     ErrorLog ${APACHE_LOG_DIR}/error.log<br />
     CustomLog ${APACHE_LOG_DIR}/access.log combined</p>
<p>SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt<br />
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key</p>
<p>&lt;/VirtualHost&gt;<br />
&lt;/IfModule&gt;<br />
</code></p>
<p>Рестартуем Apache, заходим через веб на сервер, заканчиваем настройку:<br />
<code>$ sudo systemctl restart apache2.service</code></p>
<p>После первоначальной настройки необходимо сделать еще несколько полезных вещей:<br />
1. Настроить SMTP-сервер для отправки почты:<br />
Settings -> Administration -> Basic settings -> Email server</p>
<p>2. Включить кеширование данных, для небольшого сервера достаточно APCu:<br />
<code>$ sudo vim /var/www/html/nextcloud/config/config.php<br />
'memcache.local' => '\OC\Memcache\APCu',</code></p>
<p>3. Отключить быстрый набор контактов, это повышает приватность данных:<br />
Settings -> Administration -> Sharing -> [ ]Allow username autocompletion in share dialog&#8230;</p>
<p>4. Ускорить чистку удаленных файлов.<br />
Дело в том, что по умолчанию удаленные файлы хранятся как минимум 30 дней и удаляются из &#8220;корзины&#8221; только если в систем осталось мало места на диске. Нам это совсем не нужно, пусть удаляются через 35 дней:<br />
<code>$ sudo vim /var/www/html/nextcloud/config/config.php<br />
'trashbin_retention_obligation' => '30, 35',</code></p>
<p>Enjoy!</p>
]]></content:encoded>
							<wfw:commentRss>http://rat.admin.lv/?feed=rss2&#038;p=1314</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Быстро перекодировать пачку видео для просмотра на iPad &#8211; ffmpeg в помощь</title>
		<link>http://rat.admin.lv/?p=1289</link>
				<comments>http://rat.admin.lv/?p=1289#respond</comments>
				<pubDate>Sun, 17 Feb 2019 22:08:14 +0000</pubDate>
		<dc:creator><![CDATA[Плюшевый Крыс]]></dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Multimedia]]></category>
		<category><![CDATA[ffmeg]]></category>
		<category><![CDATA[homebrew]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[mp4]]></category>
		<category><![CDATA[mp4tags]]></category>

		<guid isPermaLink="false">http://rat.admin.lv/?p=1289</guid>
				<description><![CDATA[На Маке понадобилось залить сезон сериала жене на iPad. Тратить деньги на программы перекодирования видео как-то не хочется. Вспоминаем про старый добрый ffmpeg: $ brew install ffmpeg $ for i in *.avi; do ffmpeg -i "$i" "${i%.*}.mp4"; done Для *.mkv иногда достаточно сменить контейнер. Операция происходит очень быстро, но есть шанс, что на планшете не [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>На Маке понадобилось залить сезон сериала жене на iPad. Тратить деньги на программы перекодирования видео как-то не хочется. Вспоминаем про старый добрый ffmpeg:<br />
<code>$ brew install ffmpeg<br />
$ for i in *.avi; do ffmpeg -i "$i" "${i%.*}.mp4"; done</code></p>
<p>Для *.mkv иногда достаточно сменить контейнер. Операция происходит очень быстро, но есть шанс, что на планшете не заработает.<br />
<code>$ for i in *.mkv; do ffmpeg -i "$i" -codec copy "${i%.*}.mp4"; done</code></p>
<p>Получившиеся файлы слегка переименовываем &#8211; ставим индекс серии в начало названия, так как проигрыватель на iOS сильно обрезает имена файлов. Заливаем на устройство через iTunes.</p>
<p>Еще парочку нюансов:<br />
1. Иногда при перекодировании avi в mp4 убивается звук. Можно попробовать звуковую дорожку просто скопировать:<br />
<code>$ for i in *.avi; do ffmpeg -i "$i" -acodec copy "${i%.*}.mp4"; done</code><br />
2. Теги mp4 частенько не совпадают с названием файла, можно поправить:<br />
<code>$ for i in *.mp4; do mp4tags -s `basename "$i" .mp4` $i; done</code></p>
]]></content:encoded>
							<wfw:commentRss>http://rat.admin.lv/?feed=rss2&#038;p=1289</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
	</channel>
</rss>
