Исправление проблем с Windows Update

Иногда служба обновлений Windows ведет себя не так, как от нее ожидается – то одна ошибка выскочит, то другая. Информацию по коду ошибку можно найти в Google, но не всегда советы помогают в исправлении ситуации.

Microsoft также не осталась в стороне, и подготовила набор скриптов для «лечения» Windows Update, которые можно скачать здесь.

Исправление проблем с Windows Update

Еще один совет для удаления кеша файлов Windows Update в виде срипта:

net stop wuauserv
CD %Windir%
CD SoftwareDistribution
DEL /F /S /Q Download
net start wuauserv

[MongoDB] Удаление поля из коллекции

Допустим, в какой-то коллекции есть документы, содержащие поле, которое стало уже не нужным, и вы хотите удалить это поле из всех документов данной коллекции.

Для этого достаточно выполнить следующий запрос:

db.<collection>.update({}, {$unset: {<field_name>:1}} , {multi: true});

[MongoDB] Удаление поля из массива

В коллекции ‘payments’ имеется следующая структура данных:

"log" : [
        {
            "item_id" : "1478", 
            "method" : "card", 
            "cost" : 199.0, 
            "cr_time" : ISODate("2018-06-10T10:38:49.868+0000"), 
            "pay_time" : NumberLong(1528627129), 
            "rent_end_date" : ISODate("2018-07-10T10:38:49.000+0000")
        }
        ...
]

Необходимо удалить поле «rent_end_date» для «item_id» : «1478».

Решение:

db.payments.find({'log.item_id': '1478' }).forEach(function(doc) {
    var rentEndDate = doc.log;
    for(var i = 0; i &lt; rentEndDate.length; ++i) { 
        var x = rentEndDate[i];
        delete (x["rent_end_date"]);
 
    }
    db.payments.save(doc);
});

[Linux] Удаление содержимого файла

Есть несколько возможных команд, которые позволяют удалить содержимое файла:

  1. > filename
  2. cp /dev/null filename
  3. filename < /dev/null
  4. echo -n > filename
  5. truncate -s 0 filename

[Git] Warning: Unprotected Private Key File!

Если при попытке выполнить команду (к примеру, git fetch) будет выведена ошибка «Unprotected Private Key File!», то значит у вас выставлены некорректные права доступа:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/path/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
key_load_private_type: bad permissions
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
error: Could not fetch origin

Решение:

find /path/.ssh/id_rsa -type f -exec chmod 600 {} \;
find /path/.ssh/ -type d -exec chmod 700 {} \;

[MongoDB] Полезные запросы к БД

Изменение типа данных у поля:

db.collection_name.find().forEach( function (x) {
x.field_name = NumberLong(x.field_name);
db.collection_name.save(x);
});

Изменение содержимого поля у вложенного документа:

db.collection_name.update({"obj_name.1.field_name": "Содержимое"}, { $set: { "obj_name.1.field_name": "Тест для замены" } }, multi: true)

Удаление поля из коллекции:

db.collection_name.update({},{$unset: {field_name:1}}, {multi: true})

Изменение имени поля у вложенного документа:

db.collection_name.update({}, {$rename:{"obj_name.field_name_old":"obj_name.field_name_new"}}, false, true);

Fail2ban – блокировка IP с занесением в черный список

По умолчанию Fail2ban блокирует IP-адреса, которые попадают под условия бана, на время, заданное в файле jail.conf. По истечение данного времени IP-адрес разблокируется, и с него вновь могут начать поступать запросы.

Однако можно добиться того, чтобы блокируемый адрес заносился в «черный список», и всегда блокировался.

Для этого создадим файл «черного списка», куда впоследствии будут заносится IP-адреса:

touch /etc/fail2ban/ip.blacklist

Затем в файле /etc/fail2ban/action.d/iptables-multiport.conf обновим директивы actionban и actionstart:

actionban = iptables -I fail2ban-<name> 1 -s <ip> -j DROP
            echo <ip> >> /etc/fail2ban/ip.blacklist
actionstart = iptables -N fail2ban-<name>
              iptables -A fail2ban-<name> -j RETURN
              iptables -I INPUT -p <protocol> -m multiport --dports <port> -j fail2ban-<name>
              cat /etc/fail2ban/ip.blacklist | while read IP; do iptables -I fail2ban-<name> 1 -s $IP -j DROP; done

Перезапустим сервис:

service fail2ban restart

Материал по теме: ссылка

Переход сервера на Debian Squeeze

Было:

# lsb_release -a
Distributor ID:	Debian
Description:	Debian GNU/Linux 7.11 (wheezy)
Release:	7.11
Codename:	wheezy

Стало:

# lsb_release -a
Distributor ID:	Debian
Description:	Debian GNU/Linux 8.6 (jessie)
Release:	8.6
Codename:	jessie

Избавился от Apache 2, остановившись на связке Nginx + php-fpm.

Попутно настроил использование протокола HTTPS.

[macOS] Обновление и очистка пакетов из MacPorts

Сборная команда, которая обновляет пакеты из MacPorts и делает очистку:

sudo port selfupdate && sudo port upgrade outdated && sudo port clean --all installed && sudo port -f uninstall inactive

Определение MD5-хэша в Windows

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

Команда:

certUtil -hashfile <путь до файла> [алгоритм]

Доступные алгоритмы: MD2, MD4, MD5, SHA1, SHA256, SHA384 и SHA512

Пример вычисления MD5-хэша у файла:

> certUtil -hashfile C:\picture.jpg MD5

Результат команды:

MD5 hash of fileC:\picture.jpg:
70 97 a3 dc 61 ec 8f 27 87 55 7e e4 a5 30 58 c9
CertUtil: -hashfile command completed successfully.