Spara/återskapa körande Vagrant burkar vid avstängning/uppstart

Ett simpelt script som avslutar körande Vagrant burkar vid avstängning av din dator.

#!/bin/sh -e
### BEGIN INIT INFO
# Provides:          something warm and fuzzy 
# Required-Start:    vboxdrv
# Required-Stop:     vboxdrv
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts suspended vagrant boxes and suspends running vagrant boxes
# Description:       
### END INIT INFO

# presumably only users with valid login shells are running vagrant boxes
validShells=$(cat /etc/shells | grep -v "#" | sed ':a;N;$!ba;s/\n/|/g')
userList=$(grep -E "$validShells" /etc/passwd | awk -F ':' ' { print $1 } ' | tr "\\n" " ")

case $1 in
  start)
    # loop thru every user
    for user in $userList; do
      # loop thru users suspended boxes
      for vm in $(su -c "vagrant global-status" $user 2>/dev/null | grep saved | awk ' { print $5 } '); do
        cd $vm >/dev/null
        su -c "vagrant up" $user
        su -c "vagrant status" $user > /dev/null # update global-status cache
      done
    done
  ;;
  stop)
    for user in $userList; do
      for vm in $(su -c "vagrant global-status" $user 2>/dev/null | grep running | awk ' { print $5 } '); do
        cd $vm > /dev/null
        su -c "vagrant suspend" $user
        su -c "vagrant status" $user > /dev/null # update global-status cache
      done
    done
  ;;
  status)
    for user in $userList; do
      echo "$user's vagrant box status"
      echo "------------------------------------------------------------------------"
      su -c "vagrant global-status 2> /dev/null" $user
      echo
      echo
    done
  ;;
  *)
    echo "Usage: $0 {start|stop|status}" >&2
    exit 1
  ;;
esac

exit 0

Installera med:

Redigera /etc/init.d/vagrant-boxes och klistra in ovanstående (eller ladda ner filen här). Sen kör du:

# update-rc.d vagrant-boxes defaults 99 01

99 är sekvensnumret, måste vara högre än det du har för Virtualbox (som använder 20, vilket är standard). Fungerar det exempelvis att spara boxarna vid avstängning men de inte startas igen vid start, dubbelkolla denna siffran. Andra siffran är i vilken ordning när du stänger av datorn, så 01 betyder att det är det första den gör (vilket kan vara bra).

LibreOffice blanka utskrifter

Fick en kvart över på jobbet (läs 45 minuter) att ta tag i ett problem jag haft länge; nämligen att det inte gick att skriva ut från något av LibreOffice programmen.

Problemet yttrade sig i att utskriften startade, men inget kom ut förutom en blank sida. Körde man testsidor i CUPS skrev den ut och andra program fungerade finemang.

Lösningen på problemet fram till nu har varit att först skapa en PDF i LibreOffice och sen skriva ut den med Okular i KDE. Extremt bökigt, men eftersom jag så sälla skriver ut något har jag levt med det.

Ända tills… jag bytte skrivarspråk i LibreOffice från PDF till PostScript Nivå 3.

Kruxet är att du måste göra det som admin genom att köra:

sudo /usr/lib/libreoffice/program/spadmin

annars måste du ändra skrivarinställningar för varje dokument du vill skriva ut.

spadmin

Lås upp dina SSH nycklar när du loggar in i KDE

Ett smart sätt att hantera dina SSH nycklar är att låsa upp dom när du loggar in på din dator.

Om du känner dig modig, kan du använda KDE wallet i symfoni med ssh-agent och lagra ditt lösenord för att låsa upp dina SSH-nycklar i KDE wallet och på så vis låsa upp dina nycklar när du loggar in på din dator.

Givetvis går detta att göra med andra skrivbordsmiljöer, men beskrivningen här är för KDE och borde fungera på alla Ubuntu distributioner.

Om du inte redan har en ssh nyckel med lösenord, börja med att generera en sådan.

[ogg@intel ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ogg/.ssh/id_rsa):
Created directory '/home/ogg/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/ogg/.ssh/id_rsa.
Your public key has been saved in /home/ogg/.ssh/id_rsa.pub.
The key fingerprint is:
da:ln:ix:ge:ek:sf:or:hi:re:ca:ll:02:43:24:95:00 ogg@intel
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|    :::::::::    |
|    :+:    :+:   |
|    +:+    +:+   |
|    +#+    +:+   |
|    +#+    +#+   |
|    #+#    #+#   |
|    #########    |
|                 |
+-----------------+

Skriv ett riktigt bra krångligt lösenord.

När du är klar med det, installera ksshaskpass

apt-get install ksshaskpass

Efter det skapar vi ett litet script som kör ksskaskpass vid inloggning:

cat >~/.kde/Autostart/ssh-add.sh <<_EOT_
#!/bin/sh
export SSH_ASKPASS=/usr/bin/ksshaskpass
ssh-add </dev/null
_EOT_
chmod +x ~/.kde/Autostart/ssh-add.sh

Klart!

Logga ur KDE, logga in igen, ksskaskpass kommer ploppa upp och be dig låsa upp din nyckel, bockar du i ”Spara lösenord” så sparas det i din KDE wallet och du behöver aldrig mera skriva in ditt lösenord för att låsa upp din SSH nyckel utan den låses upp när du loggar in i KDE.

Kopiera en fil tillbaka till hosten du ansluter från

Ponera att du ssh:ar till valfri server och du kommer på att du vill kopiera en fil lite snabbt tillbaka till maskinen du ssh:ar från.

Lägg till följande i din ~/.bash_profile på din server.

copyback () { scp -r "$@" ${SSH_CLIENT%% *}:~/; }

Givetvis kan du ändra sökvägen från ~/ till exempelvis ~/dl/. Det är upp till dig…

Nästa gång du ansluter och vill ”kopiera tillbaka” en fil kör du bara:

$ copyback /sökväg/till/filen.iso

och magiska saker börjar hända! Fungerar även med kataloger… fantastiskt!

Givetvis måste du ha en ssh-server körandes på datorn du ansluter från också. Men det har väl alla?