Archiv pro měsíc: Září 2013

Jak vytisknout PDF dokument zamknutý pro tisk?

MInulý týden jsem potřeboval vytisknout PDF zamknuté pro tisk. Zadal jsem do Googlu frázi „how to print locked pdf“ s očekáváním dvouminutového řešení. Nope. Nejjednodušší se zdálo nahrát dokument k někomu na server, který ho „odemkne“ a pošle zpět. Vzhledem k tomu, že se jednalo o dokument s citlivými informacemi (a navíc v angličtině), tak bych byl nerad, aby si ho četl někdo další. Dalších několik řešení bylo ve stylu „Stáhněte a nainstalujte si program PDF unlocker“. Ani to jsem nehodlal riskovat.

Jednoduché řešení, jak odemknout PDF

Na editaci vektorových souborů používám Inkscape (zdarma), který umožňuje mimo jiné i import PDF. Stačí tedy do nového dokumentu naimportovat požadované pdfko a uložit opět jako PDF.

Neinstalujte zbytečné jednoúčelové programy plné malware a virů Nainstalujte si užitečný open-source vektorový editor Inkscape.

Ubuntu: No route to host

Na domácím serveru se mi stala zvláštní věc. Pokoušel jsem se forknout repositář z Githubu s Bowerem:

media@mediaserver:/var/www/playground$ bower install bootstrap

Výsledek byl:

bower bootstrap#* not-cached git://github.com/twbs/bootstrap.git#*
 bower bootstrap#* resolve git://github.com/twbs/bootstrap.git#*
 bower bootstrap#* ECMDERR Failed to execute "git ls-remote --tags --heads git://github.com/twbs/bootstrap.git", exit code of #128

Additional error details:
 fatal: unable to connect to github.com:
 github.com[0: 192.30.252.130]: errno=No route to host

Analýza problému

Zaujala mě přeložená adresa Githubu – 192.30.252.130. Pravděpodobně kvůli nedostatku IP adres se začaly přidělovat i rozsahy určené pro lokální sítě – 192.0.0.0 a 138.0.0.0. Spíš jen pro jistotu jsem zkusil telnet:

media@mediaserver:/var/www/playground$ telnet github.com 9418
 Trying 192.30.252.130...
 telnet: Unable to connect to remote host: No route to host

Jako první mě napadlo, jestli není na firewallu v routeru (s dd-wrt) blokovaný port 9418. To byla ale úvaha mylná, protože na jiném počítači v síti git používám bez problému.

Tak jsem zkusil cílovou ip pingnout:

media@mediaserver:/var/www/playground$ ping 192.30.252.130
 PING 192.30.252.130 (192.30.252.130) 56(84) bytes of data.
 From 192.168.1.100 icmp_seq=1 Destination Host Unreachable
 From 192.168.1.100 icmp_seq=2 Destination Host Unreachable
 From 192.168.1.100 icmp_seq=3 Destination Host Unreachable
 From 192.168.1.100 icmp_seq=4 Destination Host Unreachable
 From 192.168.1.100 icmp_seq=5 Destination Host Unreachable
 From 192.168.1.100 icmp_seq=6 Destination Host Unreachable

Áha. Takže se na cílovou ip ani nedostanu. Z jiných počítačů vše v pohodě, problém je tedy přímo v serveru.

Řešení

Rutinně jsem se kouknul na routy:

media@mediaserver:/var/www/playground$ netstat -r
 Kernel IP routing table
 Destination Gateway Genmask Flags MSS Window irtt Iface
 default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
 192.0.0.0 * 255.0.0.0 U 0 0 0 eth0

Bingo! Druhá routa požere všechno začínající 192. Řešení je jednoduché. V mém případě, kdy v lokální síti používám více rozsahů jsem přidal pouze menší rozsah:

media@mediaserver:/var/www/playground$ sudo route add -net 192.30.0.0 netmask 255.255.0.0 gw 192.168.1.1 dev eth0

A routovací tabulka nyní vypadá:

media@mediaserver:/var/www/playground$ netstat -r
 Kernel IP routing table
 Destination Gateway Genmask Flags MSS Window irtt Iface
 default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
 192.0.0.0 * 255.0.0.0 U 0 0 0 eth0
 192.30.0.0 192.168.1.1 255.255.0.0 UG 0 0 0 eth0

A vše funguje:

media@mediaserver:/var/www/playground$ ping 192.30.252.130
 PING 192.30.252.130 (192.30.252.130) 56(84) bytes of data.
 64 bytes from 192.30.252.130: icmp_req=1 ttl=48 time=132 ms
 64 bytes from 192.30.252.130: icmp_req=2 ttl=48 time=132 ms
 64 bytes from 192.30.252.130: icmp_req=3 ttl=48 time=132 ms
 64 bytes from 192.30.252.130: icmp_req=4 ttl=48 time=132 ms
 64 bytes from 192.30.252.130: icmp_req=5 ttl=48 time=132 ms
 64 bytes from 192.30.252.130: icmp_req=6 ttl=48 time=132 ms

Ponaučení

Pokud na jednom stroji nefungují některé stránky nebo služby, vyplatí se kouknout do routovací tabulky.