PostgreSQL : afficher les droits spécifiques associés à un table

dbname=# SELECT grantee,privilege_type FROM information_schema.role_table_grants WHERE table_name='mytable';

 grantee  | privilege_type 
----------+----------------
 user1    | INSERT
 user1    | SELECT
 user1    | UPDATE
 user1    | DELETE
 user1    | TRUNCATE
 user1    | REFERENCES
 user1    | TRIGGER
 user2    | INSERT
 user2    | SELECT
 user2    | UPDATE
 user2    | DELETE
(11 rows)

Talend : erreur avec le service org.talend.core.model.components.IComponentsService

java.lang.RuntimeException: Le service org.talend.core.model.components.IComponentsService n'a pas été enregistré.
    at org.talend.core.GlobalServiceRegister.getService(Unknown Source)
    at org.talend.repository.model.ComponentsFactoryProvider.getInstance(Unknown Source)
    at org.talend.core.CoreService.componentsReset(Unknown Source)
    at org.talend.core.repository.model.ProxyRepositoryFactory.logOnProject(Unknown Source)
    at org.talend.repository.ui.login.LoginDialog$1.run(Unknown Source)
    at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)

Pour fixer cette erreur, le répertoire suivant est à supprimer :

# rmdir C:\Talend\workspace\.metadata\.plugins\org.eclipse.core.resources\.root\.indexes

Docker : supprimer tous les containers à l’arrêt

# docker rm $(docker ps -a|grep "Exited"|awk "{print \$1}")

Debian : migrer son système sous systemd

# apt-get update
# apt-get install systemd systemd-sysv
# reboot
# ls -al /sbin/init 
lrwxrwxrwx 1 root root 20 Apr 23 01:46 /sbin/init -> /lib/systemd/systemd
# apt-get --purge remove sysvinit

Pour activer les logs persistants de journald :

# mkdir /var/log/journal
# chgrp systemd-journal /var/log/journal
# chmod g+rwx /var/log/journal

Shell : la commande du jour

Vérification de la syntaxe des scripts shell par récursion avec shellcheck :

# shellcheck -e SC2029,SC2034 $(find . ! -path './.git/*' -type f -executable -exec sh -c 'file {}|grep -q "shell script" && echo -n "{} "' \;)

Node.js : détecter la version requise depuis le fichier package.json

# jq ".engines.node" package.json|sed -ne 's/[^0-9]*\(\([0-9]\{1,4\}\)\(\.\([0-9]\{1,4\}\)\)\{0,2\}\)[^0-9]*/\1/p')

Git : ajouter un second serveur origin pour les push

Une astuce utile si vous travaillez avec un serveur git privé et que vous souhaitez aussi publier votre code sur un serveur public (et inversement) :

# git remote set-url --add --push origin git@gitlab.my.domain:mygroup/project.git

Shell : vérifier la syntaxe d’un script

Enfin un outil pour vérifier la syntaxe de vos scripts Shell : https://github.com/koalaman/shellcheck

# apt-get install shellcheck

Fleet : déploiement d’un service global avec une template

# vim zabbix@.service
[Unit]
Description=zabbix %i
Requires=docker.service
After=docker.service

[Service]
ExecStartPre=-/usr/bin/docker kill zabbix%i
ExecStartPre=-/usr/bin/docker rm zabbix%i
ExecStartPre=/usr/bin/docker pull bhuisgen/docker-zabbix-coreos
ExecStart=/usr/bin/docker run --name zabbix%i -p 1050%i:10050 -v /var/run/docker.sock:/coreos/var/run/docker.sock -v /proc:/coreos/proc:ro -v /sys:/coreos/sys:ro -v /dev:/coreos/dev:ro -v /dev/log:/dev/log --restart=always bhuisgen/docker-zabbix-coreos zabbix%i.my.domain 80.81.82.83
ExecStop=/usr/bin/docker stop zabbix%i
TimeoutStartSec=900

[X-Fleet]
Global=true
# export FLEETCTL_TUNNEL="cluster.my.domain"
# fleetctl submit zabbix@.service
# fleetctl load zabbix@.service
# fleetctl start zabbix@{0..4}

Unbound : mise en place d’un fake DNS

La mise en place d’une cache DNS peut être nécessaire pour bypasser le résultat de requêtes DNS.

# apt-get install unbound
# vim /etc/resolv.conf
# cat /etc/unbound/unbound.conf
 
server:
    local-zone: "my.domain." static
    local-data: "fake.my.domain. IN A 10.20.2.22"
    local-data-ptr: "10.20.2.22 fake.my.domain"
Haut de page