giovedì 19 giugno 2008

Client Access AS400 su GNU/Linux


Tra le distro che ho provato (damnsmalllinux, mandrake, ecc), l'unica ad avere tutto il necessario per far funzionare a dovere il client AS400 e' la Debian.

In pratica quello che manca alle altre e' il file /usr/share/terminfo/5/5250 che rimappa la tastiera in modo da avere i tasti funzione che vanno da F13 a F24 dei vecchi terminali AS400, su SHIFT+F1 fino a SHIFT+F12 come ormai sono abituati gli utenti di IBM Client/Access per Windows.


Il pacchetto da installare e' "tn5250": http://packages.debian.org/etch/tn5250


ed include i comandi:

  • tn5250 (per avviare la sessione video da terminale a caratteri);
  • xt5250 (idem ma per X11);
  • lp5250d (per avviare la sessione stampante, necessaria per rendere disponibile al server AS400 una stampante collegata fisicamente al client);
  • scs2ascii (converte i dati IBM SCS inviati alla sessione stampante nel formato ASCII per l'invio successivo a lpr).

Per avviare automaticamente le sessioni, non ho fatto altro che modificare il file
/etc/inittab
sostituendo la riga
1:2345:respawn:/sbin/mingetty tty1
con
1:2345:respawn:/bin/login -f utente /dev/tty1 2>&1
supponendo l'esistenza dello user "utente"

quindi aggiungendo nel file
/home/utente/.bash_profile
le righe
loadkeys /usr/share/tn5250/it5250.kmap
lp5250d env.DEVNAME=AS400P outputcommand="scs2ascii |lpr" map=280 s44b1918
TERM=5250 tn5250 +underscores env.DEVNAME=AS400S1 map=280 s44b1918
per avviare automaticamente la sessione video AS400S1 e quella stampante AS400P dal server AS400 con nome host "s44b1918".


Per la gestione della stampante ci si puo' appoggiare a cups, installando pero' anche il pacchetto cupsys-bsd che include i comandi "classici" di lpr.


Per spegnere il client, ho modificato il file
/etc/inittab
sostituendo la riga
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
con
ca::ctrlaltdel:/usr/bin/halt
in questo modo, una volta eseguito il logout, l'utente dovra' premere CTRL+ALT+CANC per spegnere il proprio client.


Tra l'altro negli stessi terminali ho anche utilizzato rdesktop con un secondo user (utente2) per permettere agli utenti di usare windows con un server WBT, modificando il file
/etc/inittab
sostituendo la riga
7:2345:respawn:/sbin/mingetty tty7
con
7:2345:respawn:/bin/login -f utente2 /dev/tty7 2>&1
ed eliminando la riga
2:2345:respawn:/sbin/mingetty tty2

quindi aggiungendo nel file
/home/utente2/.bash_profile
la riga
startx -- :0 vt2
e nel file
/home/utente2/.xinitrc
la riga
exec rdesktop -f -k it -u Cognome-Nome WINSERVER
dove WINSERVER e' il nome host del server Windows Based Terminal.


In questo modo l'utente potra' passare da una sessione ad un'altra semplicemente usando i tasti CTRL+ALT+F1 (AS400) e CTRL+ALT+F2 (Windows) e spegnere il tutto con CTRL+ALT+CANC.

P.s. (14/04/2009) - Il contenuto del file /usr/share/tn5250/it5250.kmap è il seguente:
# Italian keymap with emacs enhancements
# Beta version Mon May 2 19:57:25 WET DST 1994
# Available for anon. ftp at cnuce_arch.cnr.it:/pub/Linux-local/kbd/it.kmap
#
# Based on all other keymaps available in Slackware-1.2.0.
#
# '@', '#', '[', and ']' are obtained by AltGr with the appropriate key.
#
# I have added '{', '}', '~', '`', iacute and uacute.
# They can be obtained by AltGr-(, AltGr-), AltGr-=, AltGr-', AltGr-igrave
# and AltGr-ugrave respectively.
#
# I have also added most Alt-Shift and Ctrl-Alt codes needed for emacs
# with the standard keymap of the fundamental mode.
#
# Place in your ~/.emacs the following two lines:
# (standard-display-european t)
# (set-input-mode nil nil 1)
#
# Place in your /usr/lib/X11/Xconfig:
# LeftAlt Meta
# RightAlt ModeShift
#
# To use high characters with other programs, read the documentation ;-)
# Please report all bugs and improvement proposals to the address below.
#
# Buona fortuna,
# Dario Besseghini
#
keymaps 0-2,4,6,8-9,12
include "linux-with-alt-and-altgr"
strings as usual

keycode 1 = Escape Escape
alt keycode 1 = Meta_Escape
keycode 2 = one exclam
alt keycode 2 = Meta_one
shift alt keycode 2 = Meta_exclam
keycode 3 = two quotedbl
control keycode 3 = nul
alt keycode 3 = Meta_two
control alt keycode 3 = Meta_nul
keycode 4 = three sterling
control keycode 4 = Escape
alt keycode 4 = Meta_three
control alt keycode 4 = Meta_Escape
keycode 5 = four dollar
control keycode 5 = Control_backslash
alt keycode 5 = Meta_four
shift alt keycode 5 = Meta_dollar
control alt keycode 5 = Meta_Control_backslash
keycode 6 = five percent
control keycode 6 = Control_bracketright
alt keycode 6 = Meta_five
shift alt keycode 6 = Meta_percent
keycode 7 = six ampersand
control keycode 7 = Control_asciicircum
alt keycode 7 = Meta_six
keycode 8 = seven slash
control keycode 8 = Control_underscore
alt keycode 8 = Meta_seven
shift alt keycode 8 = Meta_slash
keycode 9 = eight parenleft braceleft
control keycode 9 = Delete
alt keycode 9 = Meta_eight
shift alt keycode 9 = Meta_parenleft
control alt keycode 9 = Meta_Delete
keycode 10 = nine parenright braceright
alt keycode 10 = Meta_nine
shift alt keycode 10 = Meta_parenright
keycode 11 = zero equal asciitilde
alt keycode 11 = Meta_zero
shift alt keycode 11 = Meta_equal
keycode 12 = apostrophe question grave
control keycode 12 = Delete
alt keycode 12 = Meta_minus
control alt keycode 12 = Meta_Delete
keycode 13 = igrave asciicircum iacute
control keycode 13 = Control_asciicircum
alt keycode 13 = Meta_equal
shift alt keycode 13 = Meta_asciicircum
keycode 14 = Delete Delete
control keycode 14 = Control_underscore
alt keycode 14 = Meta_Delete
keycode 15 = Tab Tab
alt keycode 15 = Meta_Tab
keycode 16 = q
keycode 17 = w
keycode 18 = e
keycode 19 = r
keycode 20 = t
keycode 21 = y
keycode 22 = u
keycode 23 = i
keycode 24 = o
keycode 25 = p
keycode 26 = egrave eacute bracketleft
control keycode 26 = Escape
alt keycode 26 = Meta_bracketleft
keycode 27 = plus asterisk bracketright
control keycode 27 = Control_bracketright
alt keycode 27 = Meta_bracketright
keycode 28 = Return
alt keycode 28 = Meta_Control_m
keycode 29 = Control
keycode 30 = a
keycode 31 = s
keycode 32 = d
keycode 33 = f
keycode 34 = g
keycode 35 = h
keycode 36 = j
keycode 37 = k
keycode 38 = l
keycode 39 = ograve ccedilla at
control keycode 39 = nul
alt keycode 39 = Meta_at
control alt keycode 39 = Meta_nul
keycode 40 = agrave degree numbersign
control keycode 40 = Control_g
keycode 41 = backslash bar
control keycode 41 = Control_backslash
alt keycode 41 = Meta_backslash
shift alt keycode 41 = Meta_bar
keycode 42 = Shift
keycode 43 = ugrave section uacute
keycode 44 = z
keycode 45 = x
keycode 46 = c
keycode 47 = v
keycode 48 = b
keycode 49 = n
keycode 50 = m
keycode 51 = comma semicolon
alt keycode 51 = Meta_comma
shift alt keycode 51 = Meta_semicolon
keycode 52 = period colon
alt keycode 52 = Meta_period
keycode 53 = minus underscore
control keycode 53 = Control_underscore
alt keycode 53 = Meta_minus
keycode 54 = Shift
keycode 56 = Alt
keycode 57 = space
control keycode 57 = nul
alt keycode 57 = Meta_space
control alt keycode 57 = Meta_nul
keycode 58 = Caps_Lock
keycode 86 = less greater
alt keycode 86 = Meta_less
shift alt keycode 86 = Meta_greater
keycode 97 = Control

string F21 = "\033[35~"
string F22 = "\033[36~"
string F23 = "\033[37~"
string F24 = "\033[38~"
string F100 = "\033[Z"

Stumble Upon Toolbar

Blogger Templates by OurBlogTemplates.com 2008