Nov 01 2008

Screenshot stránky z příkazové řádky v Linuxu

Tag: Linux,WebJens @ 23:00

Jak vytvořit screenshot nebo náhled nějaké webové stránky? Navíc na serveru, v Linuxu a z příkazové řádky? Určitě existuje mnoho způsobů – ať už použití externí on-line aplikace, speciálního programu či utility nebo převod HTML do obrázku …

Já zde popíšu metodu, která využívá vámi preferovaný prohlížeč instalovaný na serveru (ja vybral Firefox — na Debianu iceweasel) a v kombinaci s VNC serverem jednoduše típnu obrazovku pomocí utility import.

Firefox, vncserver, import

Pro použití této metody bude potřebovat tyto tři programy. Samozřejmě že místo Firefoxe můžete použít jiný prohlížeč — Epiphany, KHTML, … prostě vše co vám na Linuxu pojede. Stejně tak, jako vncserver můžete použít vnc4server, tightvnc, atd. Podobné je to i s utilitou import.

Na Debianu můžete použít toto:

# apt-get install iceweasel vnc4server imagemagick

Pak už je to opravdu jednoduché, spustíme VNC server v požadovaném rozlišení (není třeba si dělat starosti se standardními rozlišením a můžeme si vybrat libovolné) na nevyužitém displeji (třeba 11):

# vncserver :11 -geometry 1024x768
# export DISPLAY=:11

Poté maskovanému Firefoxu za ledovou lasičku předhodíme požadovanou URL a chvíli počkáme než se spustí (občas to fakt trvá!) a než se stránka natáhne. Poté uděláme screenshot a lasičku ukončíme. Ideální je, udělat si na to celé skript screen.sh:

#!/bin/bash
iceweasel "http://www.jens.cz" &
FF_PID=$?
sleep 5
import -window root jens.cz-screen.png
kill $FF_PID

Výsledek je uložen do souboru jens.cz-screen.png. Ve finále VNC server ukončníme:

# vncserver -kill :11

Skript screenshot.sh

Toto všechno je úplně nejideálnější si udělat do skriptu, který bude mít příslušné parametry — první URL a druhý jméno výsledného souboru.

#!/bin/bash

# argument jedna je URL detailu pro screenshot
# argument dva je cesta (vcetne nazvu souboru) kam se ma screenshot ulozit
if [ ! $1 ] || [ ! $2 ]
then
	exit;
fi

vncserver :11 -geometry 1024x768
export DISPLAY=:11
iceweasel $1 &
FF_PID=$?
sleep 5
import -window root -descend $2
kill $FF_PID

sleep 1
vncserver -kill :11

Výsledek

Výsledek utility import spuštěné na display VNC serveru na URL http://www.jens.cz – klikněte pro celý náhled:

linux command line screenshot

Dokumentace

2 komentáře k článku “Screenshot stránky z příkazové řádky v Linuxu”

  1. Milan napsal:

    Zdravim,

    mam nove nainstalovany linux red flag, vidim to prvne a potreboval bych nainstalovat sap abap netweaver, verzi pro linux – je to popsane nasledovne:

    Concatenate the seven files by opening up the shell and typing in the command:

    cat N4S_TestDrive_MaxDB.iso_Part_a* > N4S_TestDrive_MaxDB.iso

    v adresari je tech 7 souboru: N4S_TestDrive_MaxDB.iso_Part_aa az ag
    kdyz to vlozim do prikazove radky, vypise se:
    N4S_TestDrive_MaxDB.iso_Part_a* : No such file or directory

    Mozna blba otazka, ale muzes mi poradit jak to udelat?
    Diky.
    Milan

    hrdlicka.milan@gmail.com

  2. Jens napsal:

    Sice nechapu smysl tohoto komentare u tohoto clanku, ale vas problem mozna bude v tom, ze mate spatne ulozene soubory “N4S_TestDrive_MaxDB.iso_Part_aa-ag”, staci jedina chyba v velokosti pismen a prikaz vam nebude fungovat, zkuste automaticke doplnovani nazvu v prikazove radce pomoci TAB a vhodne umiste hvezdicku “*”.