Rechercher dans ce blog

vendredi 19 juin 2009

texttops wrapper iso-8859

Pour pouvoir imprimer des textes non encodés en UTF-8 avec cups et le filter texttops

Il faut wrapper texttops dans ce genre de script qui se charge de faire la conversion de codage

http://www.srz.de/Members/bla/cups/filter/texttops%20wrapper/texttops

#!/usr/bin/perl -w

# texttops.pl wrapper script for the texttops filter

# ====================================================

# COpyright (C) 2007 Helge Blischke <h.blischke@acm.org>

#

# 1.00 - 2007-12-29/Bl

# initial implementation

# 1.01 - 2007-12-31/Bl

# Options and sugaring

#

# Description:

# ------------

# This script tries to determine the characterset used,

# decodes the input to the internal UTF-8 and writes

# the UTF-8 data to the original texttops filter.

use Encode;

use Encode::Guess;

#

# Configuration data, edit as needed

# -------------------------------------------------------------------------------

$texttops = $ENV{CUPS_SERVERBIN} . '/filter/orig.texttops';

@suspects = qw(iso-8859-15 iso-8859-1); # to try one by one

# -------------------------------------------------------------------------------

if (scalar @ARGV == 0)

{

die "Usage: texttops.pl jobid username title copies options [file]\n";

}

#

# Get the command line parameters

#

$jobid = $username = $title = $copies = undef;

$jobid = shift; # Job ID

$username = shift; # Job requesting user name

$title = shift; # Job title

$copies = shift; # Number of requested copies

$options = shift; # Textual representation of job attributes

$textfile = shift; # Pathname of input text file

#

# Determine from where to read

#

if (defined $textfile)

{

open (FILI, "<:raw", "$textfile") || die "ERROR: $textfile: $!\n";

}

else

{

open (FILI, "<:raw", "&STDIN") || die "ERROR: STDIN: $!\n";

}

#

# First, check the command line options

#

@opts = split (/\s+/, $options);

$charset = undef;

$buffer = undef;

foreach my $opt (@opts)

{

if ($opt =~ /encoding=(\S+)/)

{

$charset = $1;

#$charset =~ tr/A-Z/a-z/; # make lower case

if ($charset =~ /^lang/) # language

{

eval

{

require I18N::Langinfo;

I18N::Langinfo->import(qw(langinfo CODESET));

$charset = langinfo (CODESET ());

};

die "ERROR: $@\n" if ($@); # undefined language

}

else

{

$codec = find_encoding ($charset);

die "ERROR: $charset is not a valid encoding name: $codec\n" unless ref $codec;

}

warn "NOTICE: characterset = $charset\n";

last;

}

}

if (! defined $charset)

{

#

# Read the first buffer and determine the encoding

#

$buffer = '';

$codec = '';

$bytes = read (FILI, $buffer, 16384) || die "ERROR: read input: $!\n";

foreach my $name (@suspects)

{

my $temp = find_encoding ($name);

if (! ref $temp)

{

warn "ERROR: Unknown encoding $name\n";

next;

}

Encode::Guess->set_suspects($name);

$codec = guess_encoding ($buffer);

last if (ref $codec);

warn "NOTICE: $coded\n";

}

ref ($codec) || die "ERROR: Cannot guess: $codec\n";

$charset = $codec->name; # charset name

warn "NOTICE: guessed characterset = $charset\n";

}

#

# Set locale params fore the original texttops filter

#

$language = $ENV{LANG};

$lc_all = $ENV{LC_ALL};

$lc_all = $language if (! defined $lc_all);

$ENV{LC_ALL} = $lc_all;

#

# Open the pipe to the original filter

#

open (FILO, "|$texttops $jobid $username \'$title\' $copies \"$options\"")

|| die "ERROR: Cannot launch original filter: $!\n";

binmode (FILO, ":utf8"); # mark output as UTF-8

if (defined $charset)

{

if (defined $buffer)

{

my $outbuf = $codec->decode ($buffer); # decode the first input buffer

print FILO $outbuf;

}

binmode (FILI, ":encoding($charset)");

}

#

# Now copy the rest of the input over to the original filter

#

while (($bytes = read (FILI, $buffer, 16384)) > 0)

{

print FILO $buffer;

}

close (FILI);

close (FILO);

exit 0;

mardi 16 juin 2009

lpd queue with cups using cups-lpd

Pour créer une queue lpd avec CUPS il faut utiliser un petit daemon auxiliaire lancé par inetd

pour ne pas imprimer la banner il faut ajouter l'option -o job-sheets=none

En fait je suppose que l'on peut utiliser les options de lpr (voir plus bas)

CUPS-LPD

cups-lpd(8)

Name

cups-lpd - receive print jobs and report printer status to lpd clients

Synopsis

cups-lpd [ -h hostname[:port] ] [ -n ] [ -o option=value ]

Description

cups-lpd is the CUPS Line Printer Daemon ("LPD") mini-server that supports legacy client systems that use the LPD protocol. cups-lpd does not act as a standalone network daemon but instead operates using the Internet "super-server" inetd(8) or xinetd(8). If you are using inetd, add the following line to the inetd.conf file to enable the cups-lpd mini-server:

   printer stream tcp nowait lp /usr/libexec/cups/daemon/cups-lpd cups-lpd \

   -o document-format=application/octet-stream

Note: If you are using Solaris 10 or higher, you must run the inetdconv(1m) program to register the changes to the inetd.conf file.

If you are using the newer xinetd(8) daemon, create a file named /etc/xinetd.d/cups containing the following lines:

   service printer

   {

   socket_type = stream

   protocol = tcp

   wait = no

   user = lp

group = sys

passenv =

   server = /usr/libexec/cups/daemon/cups-lpd

server_args = -o document-format=application/octet-stream

   }

Options

-h hostname[:port]

Sets the CUPS server (and port) to use.

-n

Disables reverse address lookups; normally cups-lpd will try to discover the hostname of the client via a reverse DNS lookup.

-o name=value

Inserts options for all print queues. Most often this is used to disable the "l" filter so that remote print jobs are filtered as needed for printing; the examples in the previous section set the "document-format" option to "application/octet-stream" which forces autodetection of the print file format.

Performance

cups-lpd performs well with small numbers of clients and printers. However, since a new process is created for each connection and since each process must query the printing system before each job submission, it does not scale to larger configurations. We highly recommend that large configurations use the native IPP support provided by CUPS instead.

Security

cups-lpd currently does not perform any access control based on the settings in cupsd.conf(5) or in the hosts.allow(5) or hosts.deny(5) files used by TCP wrappers. Therefore, running cups-lpd on your server will allow any computer on your network (and perhaps the entire Internet) to print to your server.

While xinetd has built-in access control support, you should use the TCP wrappers package with inetd to limit access to only those computers that should be able to print through your server.

cups-lpd is not enabled by the standard CUPS distribution. Please consult with your operating system vendor to determine whether it is enabled on your system.

Compatibility

cups-lpd does not enforce the restricted source port number specified in RFC 1179, as using restricted ports does not prevent users from submitting print jobs. While this behavior is different than standard Berkeley LPD implementations, it should not affect normal client operations.

The output of the status requests follows RFC 2569, Mapping between LPD and IPP Protocols. Since many LPD implementations stray from this definition, remote status reporting to LPD clients may be unreliable.

LPR OPTIONS

The following options are recognized by lpr:

-E

Forces encryption when connecting to the server.

-H server[:port]

Specifies an alternate server.

-C "name"

-J "name"

-T "name"

Sets the job name.

-P destination[/instance]

Prints files to the named printer.

-U username

Specifies an alternate username.

-# copies

Sets the number of copies to print from 1 to 100.

-h

Disables banner printing. This option is equivalent to "-o job-sheets=none".

-l

Specifies that the print file is already formatted for the destination and should be sent without filtering. This option is equivalent to "-o raw".

-m

Send an email on job completion.

-o option[=value]

Sets a job option.

-p

Specifies that the print file should be formatted with a shaded header with the date, time, job name, and page number. This option is equivalent to "-o prettyprint" and is only useful when printing text files.

-q

Hold job for printing.

-r

Specifies that the named print files should be deleted after printing them.

Compatibility

The "c", "d", "f", "g", "i", "n", "t", "v", and "w" options are not supported by CUPS and produce a warning message if used.

mercredi 3 juin 2009

mac os x : power management CLI && hibernation

Pour ne pas avoir la création du fichier /var/vm/sleepimage et l'erreur PC EFI v9 chameleon au boot à propos de la corruption du fichier image, utiliser

# pmset -a hibernatemode 0

Man page de pmset

PMSET(1) BSD General Commands Manual PMSET(1)

NAME

   pmset -- manipulate power management settings

SYNOPSIS

   pmset [-a | -b | -c | -u] [displaysleep minutes] [disksleep minutes] [sleep minutes] [womp 1/0] [ring 1/0] [autorestart 1/0] [dps 1/0] [reduce 1/0] [powerbutton 1/0] [lidwake 1/0]

   [acwake 1/0] [lessbright 1/0] [halfdim 1/0] [sms 1/0] [boot]

   pmset -u [haltlevel percent] [haltafter minutes] [haltremain minutes]

   pmset -g [custom | live | cap | sched | ups | ps | pslog | rawlog]

   pmset schedule [cancel] type date+time [owner]

   pmset repeat cancel

   pmset repeat type weekdays time

   pmset [touch | sleepnow | noidle | lock]

DESCRIPTION

   pmset changes and reads power management settings such as idle sleep timing, wake on administrative access, automatic restart on power loss, etc.

SETTING

   The -a, -b, -c, -u flags determine whether the settings apply to battery ( -b ), charger (wall power) ( -c ), UPS ( -u ) or all ( -a ).

   Use a minutes argument of 0 to set the idle time to never.

   pmset must be run as root in order to modify any settings.

   The boot argument tells power management that system bootup is complete. Loginwindow handles this on a normal Mac OS X system.

GETTING

   -g (with no argument) will display the settings currently in use.

   -g live will also display the settings currently in use.

   -g custom will display custom settings for all power sources, although these settings may not currently be in use; a pre-set settings profile may be active instead.

   -g cap will display which power management features the machine supports.

   -g sched will display scheduled startup/wake and shutdown/sleep events.

   -g ups will display UPS emergency thresholds.

   -g ps will display status of batteries and UPSs.

   -g pslog will display an ongoing log of power source (battery and UPS) state.

   -g rawlog will display an ongoing log of battery state as read directly from battery.

   -g profiles will display the settings associated with each Energy Saver profile.

ARGUMENTS

   displaysleep - display sleep timer; replaces 'dim' argument in 10.4 (value in minutes, or 0 to disable)

   disksleep - disk spindown timer; replaces 'spindown' argument in 10.4 (value in minutes, or 0 to disable)

   sleep - system sleep timer (value in minutes, or 0 to disable)

   womp - wake on ethernet magic packet (value = 0/1)

   ring - wake on modem ring (value = 0/1)

   autorestart - automatic restart on power loss (value = 0/1)

   dps - dynamically change processor speed based on load (value = 0/1)

   reduce - reduce processor speed (value = 0/1)

   powerbutton - sleep the machine when power button is pressed (value = 0/1)

   lidwake - wake the machine when the laptop lid (or clamshell) is opened (value = 0/1)

   acwake - wake the machine when power source (AC/battery) is changed (value = 0/1)

   lessbright - slightly turn down display brightness when switching to this power source (value = 0/1)

   halfdim - display sleep will use an intermediate half-brightness state between full brightness and fully off (value = 0/1)

   sms - use Sudden Motion Sensor to park disk heads on sudden changes in G force (value = 0/1)

hibernatemode - change hibernation mode. Please use caution. (value = integer)   hibernatefile - change hibernation image file location. Image may only be located on the root volume. Please use caution. (value = path)   ttyskeepawake - prevent idle system sleep when any tty (e.g. remote login session) is 'active'. A tty is 'inactive' only when its idle time exceeds the system sleep timer. (value =   0/1)
SETTINGS PROFILES   Mac OS X stores sets of pre-defined Energy Saver settings in a few numbered profiles (1, 2, 3). All user-modified settings are stored in the custom profile (-1). The two numbered   profiles 0 and 4 are unused.
   Profiles are set per-power source. Default profile selections are   (AC=2, Batt=1, UPS=1). See Examples for ways to set profiles.
   Any modifications made to Energy Saver settings via Energy Saver or pmset will automatically switch your active profile to Custom if it was not already Custom. OS X tracks the   selected profiles and the settings for the Custom profile in com.apple.PowerManagement.plist discussed in Files below.
   1 corresponds to Energy Saver Optimization for "Better Energy Savings"   2 corresponds to Energy Saver Optimization for "Normal"   3 corresponds to Energy Saver Optimization for "Better Performance"   -1 corresponds to Energy Saver Optimization for "Custom"
SAFE SLEEP ARGUMENTS   hibernatemode takes a bitfield argument defining SafeSleep behavior. Passing 0 disables SafeSleep altogether, forcing the computer into a regular sleep.
   0001 (bit 0) enables hibernation; causes OS X to write memory state to hibernation image at sleep time. On wake (without bit 1 set) OS X will resume from the hibernation image. Bit   0 set (without bit 1 set) causes OS X to write memory state and immediately hibernate at sleep time.
   0010 (bit 1), in conjunction with bit 0, causes OS X to maintain system state in memory and leave system power on until battery level drops below a near empty threshold (This   enables quicker wakeup from memory while battery power is available). Upon nearly emptying the battery, OS X shuts off all system power and hibernates; on wake the system will   resume from hibernation image, not from memory.
   hibernatemode is set to 3 (binary 0011) by default on supported portables.
   hibernatemode is set to 0 (binary 0000) by default on supported desktops.
   Please note that hibernatefile may only point to a file located on the root volume.
UPS SPECIFIC ARGUMENTS   UPS-specific arguments are only valid following the -u option. UPS settings also have an on/off value. Use a -1 argument instead of percent or minutes to turn any of these settings   off. If multiple halt conditions are specified, the system will halt on the first condition that occurs in a low power situation.
   haltlevel - when draining UPS battery, battery level at which to trigger an emergency shutdown (value in %)   haltafter - when draining UPS battery, trigger emergency shutdown after this long running on UPS power (value in minutes, or 0 to disable)   haltremain - when draining UPS battery, trigger emergency shutdown when this much time remaining on UPS power is estimated (value in minutes, or 0 to disable)
   Note: None of these settings are observed on a system with support for an internal battery, such as a laptop. UPS emergency shutdown settings are for desktop and server only.
SCHEDULED EVENT ARGUMENTS   pmset allows you to schedule system sleep, shutdown, wakeup and/or power on. "schedule" is for setting up one-time power events, and "repeat" is for setting up daily/weekly power   on and power off events. Note that you may only have one pair of repeating events scheduled - a "power on" event and a "power off" event.
   type - one of sleep, wake, poweron, shutdown, wakeorpoweron   date/time - "MM/dd/yy HH:mm:ss" (in 24 hour format; must be in quotes)   time - HH:mm:ss   weekdays - a subset of MTWRFSU ("M" and "MTWRF" are valid strings)owner - a string describing the person or program who is scheduling this one-time power event (optional)
POWER SOURCE ARGUMENTS   -g with a 'batt' or 'ps' argument will show the state of all attached power sources. A health estimate for the battery is appended to the end of the line, in the form (Fair/Good),   indicating the battery is in 'Fair' health and we have 'Good' confidence in that estimate.
   Certain Apple battery calibration tools may temporarily disable battery charging, even though your Apple portable is plugged into AC power. Such tools will never surprise you with   this behavior; you will know it's happening. This state will be reflected in an additional line of output to 'batt' or 'ps' readings, including the pid of the app inducing this   behavior.
   'ChargeInhibit': 1432
   -g with a 'pslog' or 'rawlog' argument is normally used for debugging, such as isolating a problem with an aging battery.
OTHER ARGUMENTS   boot - tell the kernel that system boot is complete (normally LoginWindow does this). May be useful to Darwin users.   force - tells PM to immediately activate these settings. Does not write them to disk, and the settings may easily be overwritten. Useful in circumstances where PM's configd plugin   happens not to be running.   touch - PM re-reads existing settings from disk.   noidle - while continuousy running, pmset prevents idle sleep.   sleepnow - causes an immediate system sleep   dim - deprecated in 10.4 in favor of 'displaysleep'. 'dim' will continue to work.   spindown - deprecated in 10.4 in favor of 'disksleep'. 'spindown' will continue to work.
EXAMPLES   This command sets displaysleep to a 5 minute timer on battery power, leaving other settings on battery power and other power sources unperturbed.
   pmset -b displaysleep 5
   Sets displaysleep to 10, disksleep to 10, system sleep to 30, and turns on WakeOnMagicPacket for ALL power sources (AC, Battery, and UPS) as appropriate
   pmset -a displaysleep 10 disksleep 10 sleep 30 womp 1
   Restores the system's energy settings to their default values. Any user modifications are preserved under the custom profile -1.
   pmset -c 2 -b 1 -u 1
   Changes energy settings for all power sources to the Custom settings set via pmset or Energy Saver.
   pmset -a -1
   For a system with an attached and supported UPS, this instructs the system to perform an emergency shutdown when UPS battery drains to below 40%.
   pmset -u haltlevel 40
   For a system with an attached and supported UPS, this instructs the system to perform an emergency shutdown when UPS battery drains to below 25%, or when the UPS estimates it has   less than 30 minutes remaining runtime. The system shuts down as soon as either of these conditions is met.
   pmset -u haltlevel 25 haltremain 30
   For a system with an attached and supported UPS, this instructs the system to perform an emergency shutdown after 2 minutes of running on UPS battery power.
   pmset -u haltafter 2Sets displaysleep to 10, disksleep to 10, system sleep to 30, and turns on WakeOnMagicPacket for ALL power sources (AC, Battery, and UPS) as appropriate
   pmset -a displaysleep 10 disksleep 10 sleep 30 womp 1
   Restores the system's energy settings to their default values. Any user modifications are preserved under the custom profile -1.
   pmset -c 2 -b 1 -u 1
   Changes energy settings for all power sources to the Custom settings set via pmset or Energy Saver.
   pmset -a -1
   For a system with an attached and supported UPS, this instructs the system to perform an emergency shutdown when UPS battery drains to below 40%.
   pmset -u haltlevel 40
   For a system with an attached and supported UPS, this instructs the system to perform an emergency shutdown when UPS battery drains to below 25%, or when the UPS estimates it has   less than 30 minutes remaining runtime. The system shuts down as soon as either of these conditions is met.
   pmset -u haltlevel 25 haltremain 30
   For a system with an attached and supported UPS, this instructs the system to perform an emergency shutdown after 2 minutes of running on UPS battery power.
   pmset -u haltafter 2
   Schedules the system to automatically wake from sleep on July 4, 2009, at 8PM.
   pmset schedule wake "07/04/09 20:00:00"
   Schedules a repeating shutdown to occur each day, Tuesday through Saturday, at 11AM.
   pmset repeat shutdown TWRFS 11:00:00
   Prints the power management settings in use by the system.
   pmset -g
   Prints a snapshot of battery/power source state at the moment.
   pmset -g batt
   If your system suddenly sleeps on battery power with 20-50% of capacity remaining, leave this command running in a Terminal window. When you see the problem and later power and   wake the computer, you'll be able to detect sudden discontinuities (like a jump from 30% to 0%) indicative of an aging battery.
   pmset -g pslog
Files   All changes made through pmset are saved in a persistent preferences file (per-system, not per-user) at /Library/Preferences/SystemConfiguration/com.apple.PowerManagement.plist
   Scheduled power on/off events are stored separately in /Library/Preferences/SystemConfiguration/com.apple.AutoWake.plist
   pmset modifies the same file that System Preferences Energy Saver modifies.
Darwin April 1, 2006 Darwin