Fév 19 2016

SSH, Shell par défaut et Historique des Commandes sur AS400

Publié par sous AS400,SSH

QSHELL et PASE sur IBM i sont des outils intéressants mais restent limités par la fenêtre 5250 de taille fixe et sans ascenseur. Voyons comment les rendre plus agréables avec une connexion sécurisée SSH et quelques astuces.
 

Lancer le demon SSH

Considérons que SSH est déjà installé sur votre AS400 c’est-à-dire que vous avez 5733SC1 (OpenSSH, OpenSSL, zlib) dans LICPGM, vous pouvez démarrer le demon SSH avec cette commande:

STRTCPSVR SERVER(*SSHD)

 
Il ne semble pas y avoir d’option autostart pour le serveur TCP SSH.
J’ai fini par ajouter la commande au programme de démarrage QSTRUP pour que le serveur SSH démarre automatiquement à l’IPL. Vous pouvez vous connecter à votre AS400 avec Putty, téléchargeable gratuitement.
 

Shell SSH par défaut

Le shell par défaut est bsh qui est assez limité et peu commun sur d’autres systèmes d’exploitation. Il peut être changé dans le fichier sshd_config file (situé dans /QOpenSys/QIBM/UserData/SC1/OpenSSH/openssh-4.7p1/etc) en y ajoutant

#ibm pase for IBM i shell
ibmpaseforishell /QOpenSys/usr/bin/ksh

comme mentionné sur le site web IBM.
 
ksh est aussi requis pour avoir l’historique des commandes dans le terminal.
 

Historique de commandes

Une fois que ksh est le shell par défaut, vous pouvez configurer les touches fléchées pour naviguer dans l’historique des commandes. Plus besoin de retaper les commandes encore et toujours!

Dans le répertoire maison, créez un fichier .profile qui est chargé à chaque fois que vous vous connectez à l’AS400 en SSH:

if [[ $SHELL = "/QOpenSys/usr/bin/ksh" ]]; then
  set -o emacs
  alias __A=`echo "\020"`     # up arrow = ^p = back a command
  alias __B=`echo "\016"`     # down arrow = ^n = down a command
  alias __C=`echo "\006"`     # right arrow = ^f = forward a character
  alias __D=`echo "\002"`     # left arrow = ^b = back a character
  alias __H=`echo "\001"`     # home = ^a = start of line
  alias __Y=`echo "\005"`     # end = ^e = end of line
fi


Redémarrez le demon SSH dela même manière que vous l’avez démarré et reconnectez-vous.
Sur la 1re ligne, nous vérifions que le shell est bien ksh puisque les changements faits ne s’appliquent qu’aux connexions SSH uniquement. Le .profile est aussi chargé par QSH et PASE (QP2TERM) mais leur shell par défaut n’est pas ksh.
 
Se connecter avec Putty est bien plus pratique que d’appeler QP2TERM dans une fenêtre 5250 à taille fixe!
Vous pouvez faire la même chose avec bash s’il a été installé sur votre system. Indication: Installer 5733OPS Option 3, gcc est livré avec bash, perl ou encore rpm en postintallation.

 

Aucune Réponse

Oct 18 2015

La stratégie de rétention par défaut d’Exchange ne s’applique pas

Publié par sous Exchange

Vous avez configuré dans l’EAC (Exchange Admin Center) ou en Powershell une stratégie de rétention censée faire le ménage dans les éléments supprimés par exemple. Mais ca ne semble pas s’appliquer aux boîte-aux-lettres, rien n’est supprimé.
 
Comme mentionné sur Microsoft, la stratégie par défaut s’applique dès lors qu’on crée une archive pour la boîte mail. Pas de chance, la fonctionnalité d’archivage sous Exchange 2010 et 2013 requiert une CAL (Client Access License) Enterprise ou Microsoft Office Professionnel Plus et vous n’avez pas opté pour cette option faute de moyens.
 
Tout n’est pas perdu!
Vous pouvez toujours créer votre propre stratégie de rétention et l’appliquer à toutes les boîte-aux-lettres assez facilement.
Pour cela, naviguez dans
– Gestion de la conformité
– Balises de rétention, puis
– Stratégies de rétention, pour créer vos règles.

Vous pouvez appliquer votre nouvelle stratégie dirrectement dans les propriétés de la mailbox.
Pour éviter de perdre du temps ou d’oublier certaines boîte-aux-lettres, vous pouvez automatiser la procédure avec un script powershell. Vous pouvez le planifier pour qu’il s’exécute tous les weekends si vous le souhaitez.
 

add-pssnapin Microsoft.Exchange.Management.PowerShell.SnapIn

Get-Mailbox -RecipientTypeDetails UserMailbox -ResultSize unlimited | 
Set-Mailbox -RetentionPolicy "Ma strategie de retention"

Get-Mailbox -RecipientTypeDetails SharedMailbox -ResultSize unlimited | 
Set-Mailbox -RetentionPolicy "Ma strategie de retention"

Get-Mailbox -RecipientTypeDetails UserMailbox -ResultSize unlimited | 
Get-Mailbox -RecipientTypeDetails SharedMailbox -ResultSize unlimited | 

Start-ManagedFolderAssistant

 
La dernière commande Start-ManagedFolderAssistant n’est pas obligatoire, mais traitera les boîtes mail immédiatement.

 

Aucune Réponse

Sep 27 2015

Erreur de Version de Langue à la Mise à Jour Client Access

Publié par sous AS400

Le Client Access IBM i – encore appelé Client Access iSeries – est le client lourd traditionnel sur Windows pour se connecter aux plate-formes AS400. Lors de la mise à jour du Client Access, il m’est déjà arrivé de rencontrer une erreur de version de langue:
 

Erreur de version de langue IBM

La version de la langue principale Mri2928 installée ne correspond pas à la version de la langue MRI2928 vers laquelle vous essayez de mettre à jour. La mise à jour ne peut pas continuer. Pour changer la langue vers MRI2928, supprimez le produit et relancez l’installation.
 
IBM recommandent sur leur site de supprimer le logiciel et de le réinstaller. Mais la casse de la version doit être changée en premier lieu. Comme décrit dans le message d’erreur de version de langue, elle doit être en majuscules. La modification se fait dans la base de registre pour correspondre au nouveau nom.
On peut le faire soit manuellement ou par les lignes de commandes suivantes (MRI2928 est pour le Français, adaptez à votre langue) sous le prompt DOS. Le chemin est différent selon les version 32 et 64 bits du client.
 

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

REM installation Client Access 32/64 bits
set v=0

for /f "usebackq tokens=* delims= " %%I in 
(`reg query "HKLM\SOFTWARE\IBM\Client Access\CurrentVersion" 
/v version ^| findstr "REG_SZ"`)
do (for /f "tokens=3" %%i in ("%%I") do set v="%%i")

if %v% == "5" reg add "HKLM\SOFTWARE\IBM\Client Access\CurrentVersion" 
/v SourceInstallMRI /t REG_SZ /d MRI2928 /f

REM installation 32 bits sur OS Windows 64 bits
set v=0

for /f "usebackq tokens=* delims= " %%I in 
(`reg query "HKLM\SOFTWARE\Wow6432Node\IBM\Client Access\CurrentVersion" 
/v version ^| findstr "REG_SZ"`)
do (for /f "tokens=3" %%i in ("%%I") do set v="%%i")

if %v% == "5" reg add "HKLM\SOFTWARE\Wow6432Node\IBM\Client Access\CurrentVersion" 
/v SourceInstallMRI /t REG_SZ /d MRI2928 /f
 

Aucune Réponse

Sep 13 2015

Reverse Proxy Apache Permission Refusée Erreur 503

Publié par sous Apache,Linux

Apache configuré en tant que reverse proxy transfère les requêtes au backend web. Seulement, votre navigateur s’obstine à renvoyer une erreur 503: “Service temporairement indisponible

503 Service temporairement indisponible sur Apache



La première chose que je fais est de jeter un oeil aux logs HTTP dans /var/log/httpd/ssl_error_log, où je découvre une erreur de droit:
(13)Permission denied: proxy: HTTP: attempt to connect to 192.168.1.250:8080 (*) failed

L’erreur peut aussi se manifester par des:
AH01114: HTTP: failed to make connection to backend

Si SELinux est activé sur votre système, c’est probablement la source du problème. SELinux interdit Apache de créer des connexions vers l’extérieur. Vous pouvez le vérifier en le désactivant temporairement dans /etc/selinux/config. Un reboot est nécessaire ensuite.

si c’est confirmé, réactivez SELinux pour garrder un niveau de sécurité élevé, et ajoutez la règle d’exception:

$ sudo setsebool -P httpd_can_network_connect 1


Cette varriable permet aux processus et modules HTTPD de se connecter au réseau. Il existe d’autres variables booléennes ajoutant des restrictions à HTTPD. Pour les lister, exécutez getsebool -a | grep httpd.
Vous trouverez des variables intéressantes dans cette liste comme:
– httpd_can_network_connect_db (off par défaut)
– httpd_enable_ftp_server (off par défaut)
– httpd_enable_cgi (on par défaut)
etc…

L’option -P permet de rendre les changements persistants au boot. Vous devrez éventuellement relancer Apache

$ sudo /etc/init.d/httpd restart


Cette erreur est connue et documentée sur le site d’Apache

 

Aucune Réponse

Sep 06 2015

DOS / Powershell: Supprimer les Fichiers plus Vieux que

Publié par sous Windows

Les admins système sont de plus en plus confrontés à des répertoires qui grossissent continuellement, contenant des rapports générés par des scripts ou des tâches planifiées. C’est la même chose pour les répertoires temporaires et personne ne s’attarde à y faire du ménage. Mais n’est-ce pas aussi notre boulot?
Voici 2 scripts simples pouvant être exécutés régulièrement pour supprimer les fichiers plus vieux que disons 30 jours par exemple en DOS ou Powershell.


Effacer les Fichiers sous DOS

Le premier en DOS est plus limité vu que ForFiles ne peut traiter que la date de dernière modification.

Echo @off
Cls

Set Folder=C:\Reports

if exists %Folder% (
  rem *******************************************
  rem Supprime les attributs système et les fichiers cache
  rem qui ne sont pas traités par la commande del
  Forfiles /S /P "%Folder%" /M * /D -30 /C "cmd /c attrib -s -h @path"
  rem Suppression des fichiers plus vieux que 30 jours
  Forfiles /S /P "%Folder%" /M * /D -30 /C "cmd /c del /F /Q @path"

  rem Suppression des répertoires vides
  for /f "delims=" %%d in ('dir /S /B /AD %SrcDir% ^| sort /R') do rmdir "%%d"
)


Supprimer les Fichiers en Powershell


Powershell permet de travailler avec les 3 parametres LastAccessTime, LastWriteTime and CreationTime.

$limit = (Get-Date).AddDays(-30)
$path = "C:\Temp"

if (Test-Path $path) {
  # Efface les fichiers plus vieux que $limit jours.
  Get-ChildItem -Path $path -Recurse | 
  Where-Object { !$_.PSIsContainer -and $_.lastAccessTime -lt $limit } |
  Remove-Item -Force

  # Supprime les dossiers laissés vides après la suppression des vieux fichiers.
  Get-ChildItem -Path $path -Recurse |
  Where-Object { $_.PSIsContainer -and (Get-ChildItem -Path $_.FullName -Recurse |
  Where-Object { !$_.PSIsContainer }) -eq $null } | Remove-Item -Force -Recurse
}


Pour exécuter le script, vérifier les restrictions powershell avec

Get-ExecutionPolicy


Si l’état restreint est actif, exécuter

Set-ExecutionPolicy RemoteSigned


Et lancer cette commande dans une tâche planifiée pour supprimer les vieux fichiers en Powershell de façon régulière:

powershell C:\Scripts\ClearFolder.ps1
 

Aucune Réponse

« Précédent - Suivant »