Redécouverte LUN sans redémarrer HP-UX
iosan -FnC
insf -e
powermt config
powermt save
powermt display dev=all
(voir plus)
Redécouverte LUN sans redémarrer HP-UX
iosan -FnC
insf -e
powermt config
powermt save
powermt display dev=all
(voir plus)
Redécouverte LUN sans redémarrer HP-UX
Ce script ne date pas d'hier, mais il est tellement pratique et fonctionne encore dans ma production pour redécouvrir des LUN à chaud (sans redémarrer le serveur) sous Linux (testé de RedHat 4.7 à 5.5). Je me suis largement inspiré de la documentation de RedHat Scanning Storage Interconnects et les deux lignes qui font le boulot sont celles-ci :
echo "1" > /sys/class/fc_host/host/issue_lip
echo "- - -" > /sys/class/scsi_host/hosth/scan
Article complet ici
Ca n'arrive pas souvent mais on peut avoir besoin de jouer un traitement que si un des deux parents est terminé, mais pas les deux (XOR ou ou exclusif, je ne joue le fils C que si le père A ou B est terminé, mais pas les deux). Petite démo XOR VTOM en image.
Article complet iciDepuis la v5.6 (mais je crois que ça a été corrigé depuis), les formules dont les dates contiennent des tirets - ne sont pas prises en compte. Et comme j’en avais une flopée, je me suis amusé à les lister plutôt que de les chercher. Je vais vous montrer comment en PHP et un vtexport en xml. Pour résoudre le problème, il suffit de remplacer le tiret - par un slash /.
Attention ! je ne le dirai jamais assez, ne jouez pas en Prod. Sur des bugs comme ça, ouvrez un ticket chez Absyss.
<?php
if(! file_exists('export.xml')){
$cr = passthru ( 'vtexport -x > export.xml' ) ;
if( $cr != 0) {
echo "Erreur vtexport" ;
die ;
}
}
$xml = simplexml_load_file('export.xml');
$regex = "/^.*-.*$/";
foreach($xml->Environments->Environment as $env){
$envname = $env['name'];
foreach($env->Applications->Application as $application ){
$appname = $application['name'];
foreach ( $application->Jobs->Job as $job ) {
if( preg_match ( $regex, utf8_decode( $job->Planning->Formula ) ) ){
echo $envname . " / " . $appname . " / " . $job['name'] ."\n" ;
echo utf8_decode( $job->Planning->Formula ) . "\n\n" ;
}
}
}
}
// penser à gérer votre export.xml après si besoin
Vous savez sans doute que VTOM tend à basculer sa base de données en full PostgreSQL (maybe en version 6 ?). Quelques données y sont déjà, statistiques, historique, calendriers etc.
Pour l’instant, la base de données est “ouverte” et je vais vous montrer une manière de procéder pour accéder aux tables avec PHP. Vous pouvez tout aussi bien vous connecter à la base avec un utilitaire SQL du genre SQuirreL SQL client.
ou encore avec le binaire psql de l'installation VTOM. vtom@f8eeaf8b30a0:/mnt/User/temp$ ~/sgbd/bin/psql -d vtom -p 30009
Attention ! Ne faites pas n’importe quoi sur votre base de Prod. Ce genre de manipulation n’est pas soutenu par Absyss.
Si vous avez des besoins, faites des demandes d’évolution à Absyss.
Personnellement, je ne joue que sur mes serveurs de tests.
<?php
/*
* à activer dans php.ini
* extension=php_pdo.dll
* extension=php_pdo_pgsql.dll
*
*/
$host = 'localhost' ;
$user = 'vtom' ;
$db = 'vtom' ;
$pass = 'vtom' ;
$port = '30009' ;
$dsn = "pgsql:host=$host;dbname=$db;port=$port";
try {
$dbh = new PDO( $dsn, $user, $pass );
} catch (PDOException $e) {
die ( 'Erreur ! : ' . $e->getMessage() );
}
/*
* list all tables
$sql = "SELECT table_schema,table_name
FROM information_schema.tables
ORDER BY table_schema,table_name;" ;
* list all db
$sql = "SELECT datname FROM pg_database
WHERE datistemplate = false;" ;
*/
// exemple pour lister la table des stats (attention c'est gourmand en l'état, il faut bien sûr faire une requête plus spécifique)
$sql = "select * from vt_stats_job ;" ;
$sth = $dbh->query( $sql ) ;
while ( $row = $sth->fetch(PDO::FETCH_ASSOC) ){
print_r($row);
}
// close connection
if( $dbh ){
$dbh = NULL ;
}
Mise à jour. C’est encore plus fun avec Node JS, lister les statistiques VTOM par exemple :
var pg = require('pg');
//var conString = "postgres://username:password@localhost/database";
var conString = "postgres://vtom:vtom@localhost:30009/vtom";
var client = new pg.Client(conString);
var query = 'SELECT * FROM vt_stats_job;' ;
// var query = 'SELECT * FROM vt_histo;' ;
// var query = 'SELECT * FROM pg_stat_all_tables;' ; // lister toutes les tables
client.connect(function(err) {
if(err) {
return console.error('could not connect to postgres', err);
}
client.query(query, function(err, result) {
if(err) {
client.end();
return console.error('error running query', err);
}
//console.log(result.rows);
result.rows.forEach(function(row){
// console.log(row.relname); //pg_stat_all_tables
console.log(row);
});
client.end();
});
});
À force de travailler dans des domaines bien spécifiques (entreprise scindée en plusieurs cellules, aux métiers de production informatique bien différents, avec leurs propres missions), on ne sait plus très bien ce que font nos collègues (et vice versa, c'est ça d'avoir toujours la tête dans le guidon !). Comme j'aime m'intéresser à tous les aspects d'une production informatique, je me suis renseigné auprès de mes camarades sur l'architecture générale de nos Systèmes d'Information (SI).
N'ayant à la bouche que cette "application 3 Tiers", j'ai décidé d'investiguer et me suis amusé à dessiner un schéma. J'ai pris pour exemple le Système d'Information de la Maintenance de l'Armée de Terre (SIM@T).
Article complet ici# ioscan -fnkC tape Class I H/W Path Driver S/W State H/W Type Description ================================================================== tape 0 0/2/1/0.8.0.255.7.12.0 stape CLAIMED DEVICE HP Ultrium 4-SCSI /dev/rmt/0m /dev/rmt/0mn /dev/rmt/c1t12d0BEST /dev/rmt/c1t12d0BESTn /dev/rmt/0mb /dev/rmt/0mnb /dev/rmt/c1t12d0BESTb /dev/rmt/c1t12d0BESTnb tape 7 0/2/1/1.8.0.255.7.12.0 stape CLAIMED DEVICE HP Ultrium 4-SCSI /dev/rmt/7m /dev/rmt/7mn /dev/rmt/c2t12d0BEST /dev/rmt/c2t12d0BESTn /dev/rmt/7mb /dev/rmt/7mnb /dev/rmt/c2t12d0BESTb /dev/rmt/c2t12d0BESTnb tape 2 0/5/1/0.8.0.255.7.12.0 stape CLAIMED DEVICE HP Ultrium 4-SCSI /dev/rmt/2m /dev/rmt/2mn /dev/rmt/c4t12d0BEST /dev/rmt/c4t12d0BESTn /dev/rmt/2mb /dev/rmt/2mnb /dev/rmt/c4t12d0BESTb /dev/rmt/c4t12d0BESTnb tape 4 0/5/1/1.8.0.255.7.12.0 stape CLAIMED DEVICE HP Ultrium 4-SCSI /dev/rmt/4m /dev/rmt/4mn /dev/rmt/c3t12d0BEST /dev/rmt/c3t12d0BESTn /dev/rmt/4mb /dev/rmt/4mnb /dev/rmt/c3t12d0BESTb /dev/rmt/c3t12d0BESTnb # ioscan -fnk | grep DEVICE tape 0 0/2/1/0.8.0.255.7.12.0 stape CLAIMED DEVICE HP Ultrium 4-SCSI autoch 2 0/2/1/0.8.0.255.7.12.1 schgr CLAIMED DEVICE HP MSL G3 Series target 1 0/2/1/1.8.0.255.7.12 tgt CLAIMED DEVICE tape 7 0/2/1/1.8.0.255.7.12.0 stape CLAIMED DEVICE HP Ultrium 4-SCSI target 3 0/5/1/0.8.0.255.7.12 tgt CLAIMED DEVICE tape 2 0/5/1/0.8.0.255.7.12.0 stape CLAIMED DEVICE HP Ultrium 4-SCSI target 4 0/5/1/1.8.0.255.7.12 tgt CLAIMED DEVICE tape 4 0/5/1/1.8.0.255.7.12.0 stape CLAIMED DEVICE HP Ultrium 4-SCSI
Les Analytics permettent de monitorer en temps réel certaines statistiques. Attention c’est assez gourmand. De préférence, les analytics sont à lancer pour une période donnée.
Pour cela, le mieux est de créer un “Worksheet” et d’ajouter les statistiques souhaitées.
Article complet iciParfois sur un head file (pour voir la premier ligne) les caractères  apparaissent. Ca semble correspondre à un encoding UTF-8 avec BOM.
Cela m’est déjà arrivé et mon shebang ne fonctionnait pas (vous savez le fameux #! en début de script pour spécifier le shell dans lequel va s’exécuter les commandes du script)
Autre cas, vous faites un grep censé fonctionner et aucun retour sur votre grep. Pourtant le cat fonctionne. essayez la commande head et vous serez fixé sur les premiers bits, les premiers caracteres devraient être étranges
head -n 1 fichier
Pour le supprimer sous LINUX :
tail --bytes=+4 UTF8WithBom.txt > UTF8WithoutBom.txt
Ca parait tout bête, mais supprimer les premiers caractères semble suffisant.
Pour voir tous les caractères sous LINUX vi :
vi file
:set list
Pour modifier un encoding sous vi :
vi file
:set fileencoding=utf-8
autre methode en ligne de commande (pratique pour scripter)
vim +"set bomb | set fileencoding=utf-8 | wq" fichier
Dans le même ordre d’idée, voici une solution pour convertir un fichier texte DOS en Unix :
:e ++ff=dos
:setlocal ff=unix
source : VI file_format
Ce script permet de générer des traitements VTOM qui vont modifier les mots de passe sur les clients. Les clients doivent avoir été installés en root.
Article complet ici