linux @ 11 Сентябрь 2008
Сегодня ночью задался вопросом, можно ли делать скриншоты и при этом их одновременно загружать в сеть, на свой сервер.
Обыскал сеть, наткунлся на скрипт у и на его основе и скрипта для того чтобы каждой картинке выдавать уникальное имя.
Вот собственно два скрипта, однако чтобы с ними работать нужно будет поставить два пакета:
pwdgen
ftpshot
В принципе можно поступать как в скрипте Gluek - копировать в tmp, но я предпочитаю данные сохранять.
Комментарии по тексту скриптов:
Тут можно задать длину случайно сгенерированной строки.
Собственно формируем имя для скрипта, точнее md5 хэш для случайного имени.
Делаем скриншот и сохраняем его в директорию.
Так у меня выглядит адрес, куда закачиваются картинки.
Собствено копируем в буфер обмена ссылку, которую можно будет вставить нажатием средней клавиши мышки, причём только один раз(опционально).
Копируем файл из директории где лежит скриншот на удалённый хост. Внимание, для того, чтобы можно было использовать скрипт в Fluxbox необходимо настроить на удалённом хосте авторизацию по ключу. Почитать про это можно на
Также необходимо скопировать скрипты в /usr/bin тогда не будет необходимости писать путь к ним.
Итак, приступим к главному - добавлению строки в ~/.fluxbox/keys:
Перезапускаем Fluxbox - жмём PrintScreen, получаем:
http://img.librarian.spb.ru/c0294556bbae2c0f100e9771891c696d.png
P.S. Можно дописать пару строчек и тогда можно будет сделать скрипт, который бы выдавал данные для вставки на форуме, например. В том числе и с preview, но тут нужно применять ImageMagick.
Обыскал сеть, наткунлся на скрипт у и на его основе и скрипта для того чтобы каждой картинке выдавать уникальное имя.
Вот собственно два скрипта, однако чтобы с ними работать нужно будет поставить два пакета:
sudo aptitude install xclip scrotpwdgen
#!/usr/bin/perl
chomp($length=8);
$length=~s/\D*//g;
$length||='8';
srand();
@letters=('a'..'z','A'..'Z',0..9,'#','*','_','-','+','=');
for (1..$length){($pass.=$letters[rand(@letters)])};
print "\033[1;31m$pass\033[0;39m\n";ftpshot
#!/bin/bash
name=`pwdgen | md5sum | awk '{print $1}'`
file=$name.png
scrot $file -e 'mv $f /home/lib/shots/'
url="http://img.librarian.spb.ru/$file"
echo "$url" | xclip -i -l 1
scp /home/lib/shots/$file user@host:/path/to/public_htmlВ принципе можно поступать как в скрипте Gluek - копировать в tmp, но я предпочитаю данные сохранять.
Комментарии по тексту скриптов:
chomp($length=8);Тут можно задать длину случайно сгенерированной строки.
name=`pwdgen | md5sum | awk '{print $1}'`Собственно формируем имя для скрипта, точнее md5 хэш для случайного имени.
scrot $file -e 'mv $f /home/lib/shots/'Делаем скриншот и сохраняем его в директорию.
url="http://img.librarian.spb.ru/$file"Так у меня выглядит адрес, куда закачиваются картинки.
echo "$url" | xclip -i -l 1Собствено копируем в буфер обмена ссылку, которую можно будет вставить нажатием средней клавиши мышки, причём только один раз(опционально).
scp /home/lib/shots/$file user@host:/path/to/public_htmlКопируем файл из директории где лежит скриншот на удалённый хост. Внимание, для того, чтобы можно было использовать скрипт в Fluxbox необходимо настроить на удалённом хосте авторизацию по ключу. Почитать про это можно на
Также необходимо скопировать скрипты в /usr/bin тогда не будет необходимости писать путь к ним.
Итак, приступим к главному - добавлению строки в ~/.fluxbox/keys:
None Print :Exec /usr/bin/ftpshotПерезапускаем Fluxbox - жмём PrintScreen, получаем:
http://img.librarian.spb.ru/c0294556bbae2c0f100e9771891c696d.png
P.S. Можно дописать пару строчек и тогда можно будет сделать скрипт, который бы выдавал данные для вставки на форуме, например. В том числе и с preview, но тут нужно применять ImageMagick.

Сентябрь 12th, 2008 at 00:19
#!/usr/bin/perl
my @chars = ("A" .. "Z", "a" .. "z", 0 .. 9, '#', '*', '_', '-', '+', '=');
print join "", @chars[ map { rand @chars } (1 .. 10) ];
может это будет лучше для pwdgen?
Сентябрь 12th, 2008 at 02:27
А ещё проще и наглядней использовать текущую дату и время с миллисекундами. Скажем так
date +screenshot-%F-%H:%M:%S.%N.png
В случае правильности хода часов уникальней некуда.
Сентябрь 12th, 2008 at 02:35
А ещё было бы интересно делать скриншот не всего десктопа, а только активного окна (Alt + PrintScreen в Windows). В своё время не нашлось ничего подходящего, пришлось изобретать велосипед, вдруг пригодится:
Mod1 Print :Exec wid=`xprop -root | awk '/_NET_ACTIVE_WINDOW.+?#/{print $5}'`;fname=~/screenshots/`xprop -id $wid WM_CLASS | cut -d \" -f2 | tr / _`_`date +%F_%X`.png;import -window $wid "$fname"
Сентябрь 12th, 2008 at 11:36
Fd: может и лучше конечно, но я просто брал исходный скрипт, если что, его можно и по назначению использовать, да и функционала там больше.
ilynxy: Спасибо за подсказу про активное окно, я то с гимпом мучался.
А с секундами не так интересно :) В конце концов можно ведь модифицировать так так нужно именно тебе.
Сентябрь 12th, 2008 at 13:25
Возможностей там поровну :)
#!/usr/bin/perl
my $length = 8;
my @letters=('a'..'z','A'..'Z',0..9,'#','*','_','-','+','=');
$pass.=$letters[rand(@letters)] for 1..$length;
print $pass;
я лишь убрал из pwgen лишний бессмысленный код и раскраску символов для терминала.
сравните все три варианта :)
Сентябрь 12th, 2008 at 21:12
Ну да, с утра как то код читать не было времени :) В универ бежал я :)