$ for user in $(cut -d: -f1 /etc/passwd); do sudo crontab -u ${user} -l 2>/dev/null | grep -e '^[^#]' ; done;
Linux
Vakantie kiekjes – collage script
Er zweeft al een poos een wat verkreukelde fotocollage van onze vakantie naar Terschelling van 2010 rond. Ik kon me herinneren dat ik hier een script voor had gemaakt, maar kon dat nergens meer vinden. Tot ik op mijn oude website deze blog tegen kwam van 12 september 2010.
Twee weken Terschelling leveren een wereld aan foto’s op. Daar moest ik dus snel even ‘iets’ mee doen. Een snel in elkaar geflansd fotocollage script met twee imagemagick tools: Convert en montage:
#!/bin/sh
_tmpdir=tmp$
_collagedir=collage$
_img_resize=50x50
_tile=7x7
mkdir ${_tmpdir}
mkdir ${_collagedir}
for f in `ls *.[jJ][pP][gG]`
do
convert $f -resize "${_img_resize}^^" -gravity center -crop ${_img_resize}+0+0 +repage ${_tmpdir}/coll_$_$f.png
done
montage ${_tmpdir}/coll_$_*.png -geometry ${_img_resize}+0+0 -tile ${_tile} ${_collagedir}/collage_$.png
Om een hier toonbaar resultaat te krijgen heb ik 49 foto’s gebruikt, die in een raster van 7 bij 7 laten zetten. Uit alle foto’s is een vierkante uitsnede gemaakt, welke is verkleind tot 50×50 pixels:
Oh ja de foto’s komen van 3 verschillende toestellen. 1 slaat foto’s op met extentie JPG ander als jpg, daarom ls *.[jJ][pP][gG]
als simpel regulier expressie.
Joe not vi – een outdated post
I ben mijn oude website knilluz.buurnet.nl aan het opruimen en kwam daar deze post gescheven op 24 juni 2010 tegen. Hoe het nu dan toch anders is en vi dan toch echt wel mijn editor is. Behalve het informatieve stukje over acronymen, is het gegeven van een andere editor gebruiken outdated.
Voor iemand die net komt kijken bij linux kan de shell of command prompt overweldigend overkomen. Als dan ook nog een tekstbestandje moet worden ge-edit met vi dan kan dat afstotend werken. Ik raad dan ook het gebruik van joe aan.
Zoals wel vaker voorkomt bij linux is ook hier de naam van het programma is een recusieve acronym. Joe staat voor ‘joe’s own editor’. Het is een simpele, maar redelijk krachtige teksteditor.
Joe is aanwezig voor de meeste distributies. Voor zowel Ubuntu als OpenSuse kan deze geinstalleerd worden. In Ubuntu via het software centre en in OpenSuse met yast.
Joe start je op vanaf de command prompt, met eventueel de naam van het bestand :
$ joe file_to_edit
De belangrijkste toetscombinatie is ^kh (^ = de controltoets) hiermee open je het help menu. In joe kun de direct gaan editen. Als je het bewerkte bestand wil opslaan tik je ^kd, als je wil opslaan en de editor beeindigen ^kx en als je wil ophouden en niet opslaan ^c.
bakje patat en beveiligen
Gister hadden we het over onze persoonlijke websites. Mijn zoon had 2 opmerkingen. Ik wil dat bakje patat met die frikandel daar niet meer. En mijn website is niet beveiligd.
Allebei is wat aan te doen. Het bakje patat is weg en vervangen door een link naar mijn zoon zijn youtubekanaal. En de site beveiligen was klaar met:
sudo certbot --apache -d xxxxxkalma.nl -d www.xxxxxkalma.nl
En het bakje patat is definitief gearchiveerd π
Mopidy portforward
Running mopidy on a raspberry pi connected to my stereobox (receiver/amplifier whatever you will name it). Everyone linked to our local network can open mopidy on their device by entering http://musicbox:6680. Now is the only purpose of this box serving mopidy and spotify connect, it would be likely to have mopidy look like it’s running on port 80. Therefor I added a simple iptablerule.
pi@musicbox:~ $ sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 6680
Verifying the rule:
pi@musicbox:~ $ sudo iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
7 420 REDIRECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 redir ports 6680
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
And when fed up with the rule, just remove all these nat rules:
pi@musicbox:~ $ sudo iptables -t nat -F
To make this new iptable rule persistent on reboot, I used these commands:
$ cd /etc
$ sudo mkdir iptables
$ sudo su
$ /sbin/iptables-save > /etc/iptables/rules.v4
$ exit
$ sudo apt install iptables-persistent
-- found that this installation asks to create the /etc/iptables/rules.v4, not checked whether first steps can be skipped.
check installation with:
$ sudo systemctl status netfilter-persistent.service
How to learn WordPress to upload a tgz file
In mijn vorige post wilde ik een tgz uploaden (een ge-gzipte tar file) in wordpress, maar kreeg steeds een ‘Sorry this is not permitted for security reasons’. Ik ga dan altijd direct in de ‘dat bepaal ik zelf wel’ mode.
Enfin. Een oplossing was om een mime type toe te voegen en een ‘fuck you’ WordPress in de site config in te bouwen. Deze regels heb ik toegevoegd aan de functions.php om een tgz toe te voegen.
define('ALLOW_UNFILTERED_UPLOADS', true);
add_filter( 'upload_mimes', function() {
$mimes = ['tgz' => 'application/gzip'];
return $mimes;
});
Die eerste regel van define ALLOW….. is de ‘fuck you’ regel en de tweede add_filter voegt tgz als mimetype toe.
Overigens werkt dit niet vanuit de Gutenberg editor, maar moet je het bestand eerst uploaden in de media om het daarna als file aan je post te kunnen attachen. Omslachtig, maar zo werkt het wel.
Misschien toch ook maar eens naar Github kijken voor dit soort uploads.
Bash timer script
Bij het opruimen van een harde schijf vond ik nog een leuk scriptje wat ik ooit eens geschreven had. Een timer. Start het script met aantal seconden als parameter en er wordt een timer getoond die aftelt naar 0 en dan een bel laat rinkelen:
$countdown 30
$00:00:30
Er zijn wel een paar voorwaarden. mpv moet geinstalleerd zijn en 2 mp3’tjes Ticking-noise.mp3 en Ringin-clock.mp3 moeten in dezelfde folder als het script staan. Script en mp3’tjes zijn als gezipte tarfile onderaan bijgevoegd.
#!/bin/bash
##default 60 seconds
seconds=5;
##if argument exists, then overrule the default
if [ ! -z "$1" ]
then
seconds=$1;
fi
##start ticking (background)
##echo tik tak
mpv ./Ticking-noise.mp3 --no-terminal --loop-file=inf &
P1=$!
disown $P1
##start the count down and show the ticker
date1=$((`date +%s` + $seconds));
while [ "$date1" -ge `date +%s` ]; do
echo -ne "$(date -u --date @$(($date1 - `date +%s` )) +%H:%M:%S)\r";
sleep 0.1;
done
##stop ticking
kill -KILL $P1
## tingeling for 10 seconds
##echo ""
##echo tring1
mpv ./Ringing-clock.mp3 --no-terminal --length=5
New Git Repository
new git repository (project todo-list)
$ cd /home/git
$ sudo -u git mkdir todo-list.git
$ cd todo-list.git
$ sudo -u git git init --bare
on my laptop clone the repository:
$ cd ~/projects
$ git clone ssh://git@[url]:[port]/~/todo-list
work in the repository
$ cd ~/projects/todo-list
$ vi readme [edit and :wq]
$ git add readme
$ git commit -m 'initial readme file'
$ git push
or work from visual studio code (also from linux)
it has loads of git functionalities integrated.
Ubuntu 20.04 (beta)
Zonet ingetijpt:
sudo do-release-upgrade -d
We zullen zien of mijn laptop dit overleeft…..
VI(M) cheat sheet
Nu ik toch weer wat meer met de linux/unix command ga werken kan een spiekbriefje geen kwaad. De basis :wq, de i en a’s l en de hjkl toetsen ken ik wel. Ook de x dd yy p combinaties begrijp ik nog. Maar daarmee houdt het wel zo’n beetje op. Ik vond nog een printje in een la die ik ooit eens van internet had getrokken. Na wat zoeken vond ik ‘m weer op deze site. Bij dezen.
Wat | Hoe | delete | yank (kopieer) | change |
---|---|---|---|---|
β | β of h | dβ of dh of x | yβ of yh | |
β | β of j | dd | yy | cc |
β | β of k | dd | yy | cc |
β | β of l of [spatie] | d[spatie] of dl of x | yβ of yl | |
woordβ | w W | dw dW | ||
βwoord | b B | db dB | yb | |
zoek β | /RegExp | c /RegExp | ||
β zoek | ?RegExp | |||
ga naar regel# | #G | #d (delete # regels) | #y (yank # regels) | |
vooruit zoeken | n | |||
zoekrichting omkeren | N | |||
naar begin regel | ^ (dakje) | |||
naar einde regel | $ (dollar) |
En dan nog dit:
- Een delete is een cut (komt dus in paste buffer p)
- Een regel Knippen en Plakken is dus dd p
- 5 regels weggooien = 5dd
- 5 letters weggooien – 5dw
- 2 regels omwisselen = ddp
- 2 letters omwisselen = xp