Affichage des articles dont le libellé est unix. Afficher tous les articles
Affichage des articles dont le libellé est unix. Afficher tous les articles

20 avril 2026

Keepass : exécuter Putty en ligne de commande

Une astuce transmise par Christophe : il est possible de surcharger le champ "URL" de Keepass XC pour y indiquer une ligne de commande.

Ainsi, quand vous enregistrez des identifiants de connexion Linux dans votre coffre fort, vous pouvez faire en sorte qu'un double-clic sur le champ URL ouvre une session SSH Putty.

Pour ce faire, dans le champ URL indiquez :

cmd://"C:/Users/Program Files/Putty/putty.exe" -ssh {USERNAME}@digix.acme.com -pw {PASSWORD}

  • USERNAME et PASSWORD sont alimentés avec les informations que vous avez indiquées dans les champs "Nom d'utilisateur" et "Mot de passe"
  • Adaptez le chemin de Putty.exe suivant votre configuration, 
  • Remplacez digix.acme.com par le nom de votre serveur.

Sur mon poste je charge la session nommée "Yellow" qui modifie la couleur du texte en ajoutant : -load "Yellow" (cette session pourrait aussi transmettre d'autres spécificités, par exemple une clef SSH, ce qui rendrait inutile l'option -pw {PASSWORD}).




10 octobre 2025

Utiliser l'API de l'INSEE pour tester un SIRET

L'INSEE met à disposition une API pour consulter les propriétés des SIRET enregistrés. Il est nécessaire de créer un compte pour invoquer ses services en HTTP. Suivez leur guide : Insee_API_publique_modalites_connexion.pdf

Vous obtenez une clé (en bas à droite) que vous allez utiliser dans vos transactions.


Vous pouvez tester sur : https://www.data.gouv.fr/dataservices/api-sirene-open-data/ 

A noter : l'API indique une limitation à 30 transactions par minute pour les usages open data

28 juillet 2025

Personnaliser le Makefile pour conserver les sources des programmes Cobol

Lors des générations, HR Access rédige puis compile les programmes exécutables. Puis les sources sont détruits. Il peut être intéressant de conserver ces sources pour :

  • Relecture de code
  • Recompilation après adaptations manuelles
  • Recompilation après migration technique

Pour cela, on pourra par exemple :

  • Créer un répertoire $SIGACS/prod/cbl
  • Adapter le fichier $SIGACS/adm/cfg/Makefile pour y ajouter une copie et compression du source


Par exemple sur ce chapitre (à reproduire sur les autre en adaptant les suffixes) :

#-----------------------------------------------------------------
#       Build the dynamically loadable module from a .pco
#       Pro*Cobol program.
#

.pco.gnt: $(*).pco
        @echo "--- "
        @echo "---    $(*).pco  -->  $(*).gnt "
        @echo "--- "
        @echo "$(PROCOB) $(PROFLAGS) iname=$(*).pco oname=$(*).cbl"

        @cp $(*).pco ${SIGACS}/prod/cbl; gzip -f $(*).pco

        @cd `dirname $(*)`; $(PROCOB) $(PROFLAGS) iname=$(*).pco oname=$(*).cbl
        @$(COB_VAR) cd `dirname $(*)` ; $(COB) -vP -u $(COBFLAGS) $(*).cbl
        @chmod 775 $(*).gnt

A noter : dans le Makefile les commandes doivent être précédées de tabulations (et non d'espaces)

1 juillet 2025

Quand Vim ou Karaf perturbent les copier/coller avec des 00~ ou des \e[200~

 Dans certains cas, accéder à Vim ou à la console cliente SSH de Karaf vient perturber les copier coller (clic droit sous Putty).

Par exemple :


Logging in as karaf
   _____ _                 __      __                    __  ______   __  ___
  / ___/(_)___ ___  __  __/ /___ _/ /____  __  _______  /  |/  /__ \ /  |/  /
  \__ \/ / __ `__ \/ / / / / __ `/ __/ _ \/ / / / ___/ / /|_/ /__/ // /|_/ /
 ___/ / / / / / / / /_/ / / /_/ / /_/ __ / /_/ / /    / /  / // __// /  / /
/____/_/_/ /_/ /_/\__,_/_/\__,_/\__/\___/\__,_/_/    /_/  /_//____/_/  /_/

Simulateur M2M (5.6.0)
Apache Karaf Runtime (4.4.6)
simulateur-m2m> shutdown -f
hr9dev@lnxsrv001:/hr9dsn> ls -l | grep sim

lrwxrwxrwx 1 hr9dev users 21 2024-10-21 11:35 simulateur-m2m -> simulateur-m2m-5.6.0/
drwxr-xr-x 9 hr9dev users 27 2025-07-01 06:32 simulateur-m2m-5.6.0
drwxr-xr-x 8 hr9dev users 79 2025-05-20 14:30 simulateur-m2m-5.7.0

Copier coller Putty du nom de répertoire (sélection puis clic droit) ... Boum :

hr9dev@lnxsrv001:/hr9dsn> rm 00~simulateur-m2m01~

En fin de ce post on vous explique le pourquoi du comment (c'est lié au mode de collage entre crochets, ou "bracketed paste mode" ... "When bracketed paste mode is set, pasted text is bracketed with control sequences so that the program can differentiate pasted text from typed-in text") ...

Pour supprimer ce fonctionnement, dans votre session, tapez (l'avant dernier caractère est un L minuscule) :

printf "\e[?2004l"

(sous Vim exécutez ":set paste" )

16 juin 2025

Ajouter un certificat au keystore de eDSN

Lundi matin Net-Entreprises informe du remplacement des autorités de certification du site de France Travail pour le mercredi (sic) ... Ceci peut impacter les flux M2M de eDSN lors du téléchargement des Attestations d'Emploi Rematérialisées (CRM de nature 44).

Net entreprises fournit les nouveaux certificats. Vous pouvez les installer dans le "keystore" votre eDSN, ou attendre que le support client mette à disposition une nouvelle version.

Quelques notions de base :

HandShake : les serveurs contrôlent qu'ils se connaissent avant d'échanger des données. Le serveur distant va présenter son certificat. eDSN va le contrôler par rapports à ceux dont il dispose. S'il n'est pas reconnu, une erreur sera levée :

SSLHandshakeException invoking https://teledeclarants.francetravail.fr: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Certificat : Fichier qui assure de l'identité de son titulaire. Il est certifié par une autorité.

CA : autorité de certification, organisme qui valide l'authenticité d'un certificat (on peut trouver des CA intermédiaires et des ROOT CA racine. Les "intermédiaires" sont certifiés par une autre autorité. Seuls les "racine" sont "autocertifiés"). Par analogie, votre acte de naissance peut être certifié par un agent de votre mairie, qui lui même peut être certifié par un notaire.

Le keystore eDSN est un "Magasin de clés". Le keystore fourni par eDSN ne contient que les CA intermédiaires et racines des services M2M. Tant que ceux ci restent valables, le handshake sera correct.

En testant l'URL France Travail (avec la commande "m2m-plus certificates") on constate la présence d'un certificat dont la fin de validité est au 18/06/2025, une CA et une rootCA "Entrust" à fin 2030. 

27 mars 2025

Migration, évolution de mksh, comportement de la commandes de test

Les commandes de test avec les opérateurs AND et OR suivants [ condition1 -a condition2 ] et  [ condition1 -o condition2 ] peuvent ne pas être interprétées de la même manière en fonction de la version de mksh.

Avec l'ancienne machine :

hr9@srv001:/home/adm/hr9> echo "$KSH_VERSION"
@(#)MIRBSD KSH R39 2009/08/01
hr9@srv001:/home/adm/hr9> VAR1=""
hr9@srv001:/home/adm/hr9> VAR2=""
hr9@srv001:/home/adm/hr9> [ ! "${VAR1}" -a "${VAR2}" ] && echo "Erreur"
<Pas d'erreur>

Avec la nouvelle machine

hr9@srv002:/home/adm/hr9> echo "$KSH_VERSION"
@(#)MIRBSD KSH R56 2018/01/14
hr9@srv002:/home/adm/hr9> VAR1=""
hr9@srv002:/home/adm/hr9> VAR2=""
hr9@srv002:/home/adm/hr9> [ ! "${VAR1}" -a "${VAR2}" ] && echo "Erreur"
Erreur

Consigne :
  • Ne pas utiliser dans les tests les opérateurs "-a" (AND) et "-o" (OR)

Préférer les syntaxes : 
  • pour AND : [ condition1 ] && [ condition2 ]
  • pour OR : [ condition1 ] || [ condition2 ]
ou
  • pour AND : [[ condition1 && condition2 ]]
  • pour OR : [[ condition1 || condition2 ]]
Et les regroupements :
[[ (condition1 && condition2) || condition3 ]]

Attention aux autres subtilités de l'opérateur [[ ... ]] (opérateurs numériques < == >, globalisation ... )

7 mars 2025

Tester l'ouverture des flux avec Test-NetConnection de PowerShell

Ci dessous un script PowerShell pour tester les connexions depuis un poste client Windows vers un serveur HR Access.

Dans cet exemple le serveur HR est à l'adresse 192.168.126.1 et la base de données sur 192.168.126.2
Les ports du LISTENER, du HTTP, AP0, SSH sont 1521, 1100, 1101 et 22
L'applicatif doit être démarré et à l'écoute.

Avoir exécuté la commande ipconfig /flushdns dans une fenêtre de commande DOS
Exécuter, dans une fenêtre PowerShell, le script ci-dessous :

$ipList = @(
@{IP="192.168.126.2"; Port=1521},
@{IP="192.168.126.1"; Port=1100},
@{IP="192.168.126.1"; Port=1101},
@{IP="192.168.126.1"; Port=22 }
)

$logFile = "test-netconnection.log"
"" | Out-File -FilePath $logFile

Write-Host "Les résultats sont enregistrés dans $logFile" -ForegroundColor Cyan

foreach ($entry in $ipList) {
$ip = $entry.IP
$port = $entry.Port
$result = Test-NetConnection -ComputerName $ip -Port $port

if ($result.TcpTestSucceeded) {
$message = "${ip}:${port} est accessible"
Write-Host "${ip}:${port} est accessible" -ForegroundColor Green
} else {
$message = "${ip}:${port} est injoignable"
Write-Host "${ip}:${port} est injoignable" -ForegroundColor Red
}

$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
"$timestamp - $message" | Out-File -FilePath $logFile -Append
}

Résultat (si les flux sont ouverts et les applications à l'écoute) :

192.168.126.2:1521 est accessible
192.168.126.1:1100 est accessible
192.168.126.1:1101 est accessible
192.168.126.1:22 est accessible

6 mars 2025

Wallet Oracle et SQLPlus

Créer un wallet Oracle permet d'y stocker les mots de passe de coinnexion, et ainsi d'éviter de retrouver des sqlplus HR/PASSWORD dans les scripts d'exploitation

Exemple (sur une machine disposant du client Oracle)

La base est HR9DEV hébergée par le serveur HOST_HR9DEV, les comptes HR et JETSPEED. Nous allons créer des alias HR9DEV_HR et HR9DEV_JETSPEED.

Les commandes permettent d'indiquer le mot de passe en ligne. Pour éviter qu'il ne soit accessible dans l'historique de commande, préférer répondre à la question  qui sera posée.

mkdir $HOME/.wallet

chmod 700 $HOME/.wallet

cd $HOME/.wallet

mkstore -wrl . -create

Oracle Secret Store Tool Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
Copyright (c) 2004, 2019, Oracle and/or its affiliates. All rights reserved.
Enter password: *******
Enter password again: *******

mkstore -wrl . -createCredential HR9DEV_JETSPEED JETSPEED

Oracle Secret Store Tool Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
Copyright (c) 2004, 2019, Oracle and/or its affiliates. All rights reserved.
Your secret/Password is missing in the command line
Enter your secret/Password: ***
Re-enter your secret/Password: ***
Enter wallet password: *******

15 juin 2023

Oracle - Create database / env Linux - Importance du characterset

En cas de migration technique, prendre soin de bien choisir le « character set » de la base de données et de bien contrôler l'environnement Linux. Sans quoi lors de la bascule des données des caractères comme £ ou § utilisés par HR Access peuvent être dénaturés.

Commande de test côté Linux :

env|grep -E "LC_|NLS"
locale charmap
locale -a|grep fr_FR


Commande de test côté Oracle :

select * from nls_database_parameters where parameter like '%CHARACTERSET%' or parameter like '%LANGUAGE%';


Par exemple :

LINUX

LC_COLLATE=fr_FR@euro
LC_CTYPE=fr_FR@euro
NLS_DATE_FORMAT=YYYY-MM-DD-HH24.MI.SS
NLS_LANG=.WE8MSWIN1252
ISO-8859-15
fr_FR
fr_FR@euro
fr_FR.iso88591
fr_FR.iso885915@euro
fr_FR.utf8


ORACLE

NLS_DATE_LANGUAGE FRENCH
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_CHARACTERSET WE8MSWIN1252
NLS_LANGUAGE FRENCH

Il faut que les deux paramètres soient identiques.

26 avril 2022

Modèle d'entête de script sous Linux avec Vim

Voici un moyen simple de proposer un en-tête personnalisé pour les scripts shell nouvellement créés dans l'éditeur Vi (Vim sous Linux). 

1) Rédiger le modèle, le déposer dans le $HOME : par exemple

vi $HOME/.vim/sh_header.temp
#!/usr/bin/env ksh
#-------------------------------------------------------------------------------
#@(#) Write a title for this script shell here
#-------------------------------------------------------------------------------
#@(#) Syntax  :  ... {SIMUL*|EXEC} PARAM2 [PARAM3]
#@(#) {A*|B} choice, * defaut, X mandatory, [Y] optional
#@(#)    - PARAM1       : Execution mode (SIMUL defaut)
#@(#)    - PARAM2       : Parametre 2 (mandatory)
#@(#) - PARAM3 : Parametre 3 (optional)
#@(#) #@(#) Example : ksh ... #------------------------------------------------------------------------------- # Updates : # Date Author Feature details, issue fixed # 01/01/20.. John DOE Initialization #------------------------------------------------------------------------------- # Trace mode : export Trace=${Trace:-false} # export "Trace=true" to activate Unix traces # -------------------- CONSTANTS --------------------
#  --------------------       FUNCTIONS        --------------------

function check_parameters {
   ${Trace:-false} && set -x

   echo "<I> Checking parameters"

   case "${PARAM1}" in
   (SIMUL)  : ;;
   (EXEC)   : ;;
   (*)      echo "<W> Parameter 1 invalid (SIMUL, EXEC)"; return 1 ;;
   esac

   # ...

   return 0
}

function just_do_it {
   ${Trace:-false} && set -x

   echo "<I> just do it"

   # ...

   return 0
}

#  --------------------          MAIN          --------------------

function main {
   ${Trace:-false} && set -x
   echo "<I> PARAM1=${PARAM1}"
   echo "<I> PARAM2=${PARAM2}"
echo "<I> PARAM3=${PARAM3}"
check_parameters || return 1 just_do_it || return 1 return 0 } # -------------------- PARAMETRES -------------------- PARAM1=${1:-SIMUL} PARAM2=${2:?Parameter 2 not set !} PARAM3=${3:-DEFAULT} # -------------------- EXECUTION -------------------- LOGFILE="${LOG}/$(basename $0 .sh).$(date +'%Y-%m-%d-%H.%M.%S').log" echo "<I> Logfile is : ${LOGFILE}" RETFILE=${TMP}/returnCode.$$ { rm -f "${RETFILE}"; main; echo $? > "${RETFILE}"; } | tee "${LOGFILE}" RETCODE=$(cat "${RETFILE}") echo "<I> Return code : ${RETCODE:-255}" rm -f ${TMP}/*.$$ ${TMP}/$$.* ${TMP}/*.$$.* exit ${RETCODE:-255}

2) Ajouter dans le fichier de configuration de Vim une ligne pour votre "autocommande" :

vi $HOME/.vimrc
autocmd bufnewfile *.sh,*.ksh 0r $HOME/.vim/sh_header.temp

C'est à dire :

  • En cas de nouveau fichier
  • Dont le nom est *.sh ou *.ksh
  • Lire et ajouter en ligne 0 le contenu de sh_header.temp

3) L'opération est à répéter sur chacun des environnements de développement


Dès lors, si vous ouvrez sous Linux avec Vi / Vim un nouveau fichier suffixé par ".sh" ou ".ksh" ce fichier sera initialisé avec votre l'entête.


Merci à www.tecmint.com

Plus d'informations sur vimdoc.sourceforge.net

24 novembre 2021

eDSN, evMedia - "Bad history file syntax!" ou "MalformedInputException: Input length = 1"

Un upgrade eDSN ou evMedia peut entrainer une mise à jour de la version du Karaf embarqué. A cette occasion le fichier contenant l'historique des commandes peut avoir changé de format et l'ancien fichier être considéré comme illisible. Dans le pire des cas cela provoque un blocage de l'accès aux sessions SSH ...


En cas de présence de ce message le edsn.log, la console SSH est accessible

2021-11-24T09:56:28,514 | INFO  | 4)-nio2-thread-1 | ServerSessionImpl                | Session edsn@/127.0.0.1:46726 authenticated
2021-11-24T09:56:28,750 | WARN  | onsole user edsn | jline                            | Failed to load history
java.lang.IllegalArgumentException: Bad history file syntax! The history file `/home/adm/hr9re1/.karaf/karaf.history` may be an older history: please remove it or use a different history file.
        at org.jline.reader.impl.history.DefaultHistory.addHistoryLine(DefaultHistory.java:185) ~[!/:?]
        at org.jline.reader.impl.history.DefaultHistory.addHistoryLine(DefaultHistory.java:169) ~[!/:?]
        at org.jline.reader.impl.history.DefaultHistory.lambda$load$0(DefaultHistory.java:86) ~[!/:?]


Il suffit de se connecter à la console et de réinitialiser l'historique par la commande ssh suivante :

edsn> shell:history --clear


Le cas d'erreur suivant est plus gênant puisque le client SSH est alors inaccessible :

Au lancement du client eDSN par exemple :

edsn>

Error executing command: java.nio.charset.MalformedInputException: Input length = 1

 

Dans edsn.log

2021-11-15T11:21:26,946 | ERROR | onsole user edsn | ShellUtil                        | Exception caught while executing command

java.io.UncheckedIOException: java.nio.charset.MalformedInputException: Input length = 1

        at java.io.BufferedReader$1.hasNext(BufferedReader.java:577) ~[?:?]

        at java.util.Iterator.forEachRemaining(Iterator.java:132) ~[?:?]

La solution est alors de réinitialiser l'historique des commandes Karaf en détruisant le fichier. 

Dans notre cas : 

rm -f ~/.karaf/karaf.history

9 septembre 2020

make - erreur fatale: sqlcpr.h : Aucun fichier ou dossier de ce type

Sur une de mes plateformes, lors de la recompilation de programmes C (make all), des erreurs apparaissent sur les programmes DNA4 et DNA8 :

---
---    APC.c   -->  APC.o
---
cc -D_SIGA_TYPE_MONO -m64 -fPIC -c APC.c
cc -D_SIGA_TYPE_MONO -m64 -fPIC  -O             -c -o DNA4.o DNA4.c
DNA4.c:334:22: erreur fatale: sqlcpr.h : Aucun fichier ou dossier de ce type
 #  include <sqlcpr.h>
                      ^
compilation terminée.
make: *** [DNA4.o] Erreur 1

et

DNA8.c:394:22: erreur fatale: sqlcpr.h : Aucun fichier ou dossier de ce type
 #  include <sqlcpr.h>
                      ^
compilation terminée.
make: *** [DNA8.o] Erreur 1

Il se trouve que le répertoire contient des fichiers source DNA*.c et des DNA*.pc

Ces sources nécessitent une précompilation Oracle.
Pour que le makefile considère en priorité les sources ".pc" il faut donc :

  • soit retirer les ".c" (rm)
  • soit mettre à jour l'horodatage des ".pc" (touch).

Sans cela c'est une commande de compilation C classique qui est lancée, et les appels Oracle ne sont pas compris. 


Exemple :

rm -f DNA4.c

make DNA4.o

---
---    DNA4.pc   -->  DNA4.o
---

Pro*C/C++: Release 19.0.0.0.0 - Production on Wed Sep 9 14:52:59 2020
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

System default option values taken from: /app/oracle/client/product/19.0.0/client_1/precomp/admin/pcscfg.cfg

cc -D_SIGA_TYPE_MONO -m64 -fPIC -c  -I/app/oracle/client/product/19.0.0/client_1/precomp/hdrs  -I/app/oracle/client/product/19.0.0/client_1/precomp/public -I/app/oracle/client/product/19.0.0/client_1/precomp/include   -I/app/oracle/client/product/19.0.0/client_1/oracore/include -I/app/oracle/client/product/19.0.0/client_1/oracore/public -I/app/oracle/client/product/19.0.0/client_1/oracore/port/include -I/app/oracle/client/product/19.0.0/client_1/xdk/include -I/app/oracle/client/product/19.0.0/client_1/xdk/public -I/app/oracle/client/product/19.0.0/client_1/nlsrtl/include  -I/app/oracle/client/product/19.0.0/client_1/ldap/public/sslinc -I/app/oracle/client/product/19.0.0/client_1/ldap/include/sslinc -I/app/oracle/client/product/19.0.0/client_1/ldap/include/cryptoinc  -I/app/oracle/client/product/19.0.0/client_1/slax/include   -I. DNA4.c

ls -lrt DNA4*
18536 2016-12-15 15:37 DNA4.pc
    0 2020-09-09 14:52 DNA4.lis
35270 2020-09-09 14:52 DNA4.c
18608 2020-09-09 14:52 DNA4.o

Une autre option est de préciser explicitement dans le $SIGACS/adm/src/Makefile la règle de compilation pour ces programmes. Ajouter alors (avant la règle ".pc.o:  $(*).pc") deux chapitres sur le modèle de celui indiquant la règle ".pc.o:  $(*).pc".

Dans mon cas :

#----------------------------------------------------------------
#       Build the object module DNA4.o
#
DNA4.o: DNA4.pc
        @echo "--- "
        @echo "---    DNA4.pc   -->  DNA4.o "
        @echo "--- "
        @$(PROC) $(PCCFLAGS) iname=DNA4.pc oname=DNA4.c
        $(CC) -c $(DEFINE_PROC) $(INCLUDE) DNA4.c
#----------------------------------------------------------------
#       Build the object module DNA8.o
#
DNA8.o: DNA8.pc
        @echo "--- "
        @echo "---    DNA8.pc   -->  DNA8.o "
        @echo "--- "
        @$(PROC) $(PCCFLAGS) iname=DNA8.pc oname=DNA8.c
        $(CC) -c $(DEFINE_PROC) $(INCLUDE) DNA8.c


17 juin 2020

Red Hat Out of memory: Kill process (OOM Killer)

Sur une petite VM disposant de 8Go de RAM un projet tentait de faire tourner 5 environnements HR.

Bizarrement, quand on démarrait un Tomcat HRaSpace sur l'un ... Le tomcat d'un autre environnement tombait.

Pas toujours le même.
Pas de contention sur les numéros de ports.
Pas de message dans les logs applicatifs.

En fait ... quand le système (ici un Red Hat 7.5) est en manque de mémoire, il recherche les processus les plus gourmands ... Et il les tue.

Pour en trouver la trace :

dmesg -T | grep -i kill
[mer. juin 17 14:05:22 2020] java invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0
[mer. juin 17 14:05:22 2020]  [<ffffffff94597904>] oom_kill_process+0x254/0x3d0
[mer. juin 17 14:05:22 2020]  [<ffffffff945973ad>] ? oom_unkillable_task+0xcd/0x120
[mer. juin 17 14:05:22 2020] Out of memory: Kill process 9938 (java) score 120 or sacrifice child
[mer. juin 17 14:05:22 2020] Killed process 9938 (java) total-vm:4911976kB, anon-rss:1467340kB, file-rss:0kB, shmem-rss:32kB

10 janvier 2019

eDSN 5 m'affiche des tableaux chargés de ????????

Suite à upgrade eDSN 5 (ou ePASRAU 2) certains voient les tableaux de l'interface SSH poluée par des caractères "?".



Pour corriger l'affichage vous devrez :
  • Dans le script "setenv" du répertoire "bin" de l'application, corriger les variables d'environnement relatives aux langues / localisations

    Sur mon site :


unset LC_COLLATE
unset LC_CTYPE
export LANG=fr_FR.utf8


  • Au niveau du paramétrage de votre session Putty, choisir :
    Window / Translation / Remote character set : UTF-8

Après arrêt / démarrage :