Extraction des données XML de la Vera
http://192.168.0.17:3480/data_request?id=sdata&output_format=xml
Puis faire clic droit / enregistrer sous …
Ouvrir Excel /Fichier Ouvrir / Format .XML puis choisir le fichier.
Un site utilisant WordPress
Extraction des données XML de la Vera
http://192.168.0.17:3480/data_request?id=sdata&output_format=xml
Puis faire clic droit / enregistrer sous …
Ouvrir Excel /Fichier Ouvrir / Format .XML puis choisir le fichier.
just pop this code into Test Luup code (Lua) (under UI5 APPS / Develop Apps):
local file = io.open("/www/devlist.txt", "w") file:write("[DeviceNo / id] device names on " .. os.date() .. "\n") for deviceNo,d in pairs(luup.devices) do if d.id ~= "" then file:write(string.format('[%03d / %s] %s \n', deviceNo, d.id, d.description)) end end file:close()
… then run it and go and look at the file it created with a web browser
at
http://192.168.0.138/devlist.txt
http://192.168.0.138:3480/data_request?id=device&action=delete&device=Device_ID
But :
Remplacer fougere.myds.me:8080 par les-fougs.com dans les champs post_content et guid de la table wp_posts
create table wp_posts_old as select * from wp_posts
SELECT post_content FROM wp_posts WHERE post_content like ‘%http://fougere.myds.me:8080/recettes%’
SELECT REPLACE (post_content, ‘http://fougere.myds.me:8080/recettes’ , ‘http://les-fougs.com/recettes’) FROM wp_posts WHERE post_content like ‘%http://fougere.myds.me:8080/recettes%’
update wp_posts set post_content = REPLACE (post_content, ‘fougere.myds.me:8080’ , ‘les-fougs.com’) WHERE post_content like ‘%fougere.myds.me:8080%’
SELECT guid FROM wp_posts WHERE guid like ‘%http://fougere.myds.me:8080/recettes%’
SELECT REPLACE (guid, ‘http://fougere.myds.me:8080/recettes’ , ‘http://les-fougs.com/recettes’) FROM wp_posts WHERE guid like ‘%http://fougere.myds.me:8080/recettes%’
update wp_posts set guid = REPLACE (guid, ‘fougere.myds.me:8080’ , ‘les-fougs.com’) WHERE guid like ‘%fougere.myds.me:8080%’
Source :
REPLACE(str,from_str,to_str)
Returns the string str with all occurrences of the string from_str replaced by the string to_str. REPLACE() performs a case-sensitive match when searching for from_str.
mysql> SELECT REPLACE(‘www.mysql.com’, ‘w’, ‘Ww’);
-> ‘WwWwWw.mysql.com’
This function is multibyte safe.
Monitoring d’un process sous Linux avec Zabbix.
Exemple pour le process BIP.
zabbix_get -p 10050 -k proc.num[,seeasown,,/soft/BIP/runtime/jvm64/bin/java] -s vledi01p
3
ps -ef|grep BIP|grep -v grep seeasown 30335 1 0 10:22 ? 00:00:00 /bin/sh /soft/BIP/bin/domain.sh seeasown 30410 30335 0 10:22 ? 00:00:06 /soft/BIP/runtime/jvm64/bin/java -D[Process Controller] -server -Xms64m -Xmx512m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Djboss.domain.default.config=domain.xml -Djboss.host.default.config=host.xml -Dvm.bisas.db.ssl=false -Dorg.jboss.boot.log.file=/soft/BIP/log/BIP_VLEDI01P//process-controller.log -Dlogging.configuration=file:/soft/BIP/domain/configuration/logging.properties -jar /soft/BIP/jboss-modules.jar -mp /soft/BIP/modules org.jboss.as.process-controller -jboss-home /soft/BIP -jvm /soft/BIP/runtime/jvm64/bin/java -mp /soft/BIP/modules -- -Dorg.jboss.boot.log.file=/soft/BIP/log/BIP_VLEDI01P//host-controller.log -Dlogging.configuration=file:/soft/BIP/domain/configuration/logging.properties -server -Xms64m -Xmx512m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Djboss.domain.default.config=domain.xml -Djboss.host.default.config=host.xml -Dvm.bisas.db.ssl=false -- -default-jvm /soft/BIP/runtime/jvm64/bin/java seeasown 30426 30410 0 10:22 ? 00:00:13 /soft/BIP/runtime/jvm64/bin/java -D[Host Controller] -Dorg.jboss.boot.log.file=/soft/BIP/log/BIP_VLEDI01P//host-controller.log -Dlogging.configuration=file:/soft/BIP/domain/configuration/logging.properties -server -Xms64m -Xmx512m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Djboss.domain.default.config=domain.xml -Djboss.host.default.config=host.xml -Dvm.bisas.db.ssl=false -jar /soft/BIP/jboss-modules.jar -mp /soft/BIP/modules -jaxpmodule javax.xml.jaxp-provider org.jboss.as.host-controller -mp /soft/BIP/modules --pc-address localhost --pc-port 53430 -default-jvm /soft/BIP/runtime/jvm64/bin/java -Djboss.home.dir=/soft/BIP seeasown 30494 30410 0 10:22 ? 00:01:12 /soft/BIP/runtime/jvm64/bin/java -D[Server:BIP_VLEDI01P] -Xms1G -Xmx2G -Xss1M -server -server -d64 -XX:+UseG1GC -XX:MaxMetaspaceSize=1G -XX:+HeapDumpOnOutOfMemoryError -Xloggc:gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.PollSelectorProvider -Xverify:none -Dsun.java2d.noddraw=true -Djco.cpic_maxconv=204 -Doracle.jdbc.J2EE13Compliant=true -Djboss.modules.safe-jdk=true -Dcom.seeburger.conf.user=BISAS -Dcom.seeburger.conf.xml.fileprovider=Database -Dbisas.home=/soft/BIP -Dbisas.data=/soft/BIP/data -Dbisas.conf=/soft/BIP/conf -Dbisas.temp=/soft/BIP/temp -Dbisas.log=/soft/BIP/log -Dbisas.software=/soft/BIP/software -Dcom.seeburger.conf.xml.basedir=/soft/BIP/conf/SeeConfig -Ddir.pl.mappings=/soft/BIP/conf/pl -Dcom.sun.xml.namespace.QName.useCompatibleSerialVersionUID=1.0 -Dcom.seeburger.licensing.path=/soft/BIP/conf/license -Djava.io.tmpdir=/soft/BIP/temp -Djava.endorsed.dirs=/soft/BIP/lib/charsets -Djava.rmi.server.hostname=vledi01p.ftdmz.local -Dmail.mime.multipart.bmparse=false -Dmail.mime.cachemultipart=false -Dorg.eclipse.emf.ecore.EPackage.Registry.INSTANCE=org.eclipse.emf.ecore.impl.EPackageRegistryImpl -Dusehornetqstore=true -Dsecureedge.local.logger=seelogger -Duseinmemoryprocessing=true -Djgroups.bind_addr=vledi01p.ftdmz.local -Djgroups.use.jdk_logger=true -Dmaverick.workaroundEpollBug=true -Dsun.net.useExclusiveBind=false -Dcom.arjuna.ats.jta.xaAssumeRecoveryComplete=true -Dhibernate.dialect_resolvers=com.seeburger.hibernate.extensions.DialectResolver -Dinstance.id=BIP_VLEDI01P -Dinstance.group=Portal -Dinstance.roles=B2BPortal -Dsystem.id=vledi01p.ftdmz.local -Djboss.socket.binding.port-offset=0 -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.host.default.config=host.xml -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.modules.system.pkgs=org.jboss.byteman -Djboss.home.dir=/soft/BIP -Dorg.jboss.resolver.warning=true -Dorg.apache.tomcat.util.http.Parameters.MAX_COUNT=10000 -Djboss.domain.default.config=domain.xml -Dsun.rmi.dgc.client.gcInterval=3600000 -Djava.awt.headless=true -D[Host Controller]=true -Dvm.bisas.db.ssl=false -Djboss.server.log.dir=/soft/BIP/domain/servers/BIP_VLEDI01P/log -Djboss.server.temp.dir=/soft/BIP/domain/servers/BIP_VLEDI01P/tmp -Djboss.server.data.dir=/soft/BIP/domain/servers/BIP_VLEDI01P/data -Dorg.jboss.boot.log.file=/soft/BIP/domain/servers/BIP_VLEDI01P/log/boot.log -Dlogging.configuration=file:/soft/BIP/domain/configuration/logging.properties -jar /soft/BIP/jboss-modules.jar -mp /soft/BIP/modules -jaxpmodule javax.xml.jaxp-provider org.jboss.as.server
Il faut repérer le nom du process en rouge : /soft/BIP/runtime/jvm64/bin/java .
et le nom du user (facultatif) en bleu : seeasown
proc.num[,seeasown,,/soft/BIS/runtime/jvm64/bin/java] (Attention au virgules)
Type d’info : Numéric (float)
On positionne ensuite un trigger :
{VLEDI01P – DCC:proc.num[,seeasown,,/soft/BIP/runtime/jvm64/bin/java].last(0)}=0
Supprimer retour chariot dans le fichier file1.txt et ecriture dans file2.txt
findstr /vir « ^$ » file1.txt > file2.txt
Recherche de \In dans file2.txt et ecriture dans file3.txt
findstr « \In » file2.txt > file3.txt
Fichier non vide
for %%I in (file3.txt ) do ( set size=%%~zI )
If %size% LEQ 0 goto fin_prg1
plink -ssh -l root -pw mot_de_passe nom_du_serveur « commande »
sc \\nom_du_serveur query nom_du_service » | find « RUNNING »
if !errorlevel! equ 0 sc \\nom_du_serveur stop « nom_du_service »
sc \\nom_du_serveur query nom_du_service
sc \\nom_du_serveur start nom_du_service
sc \\nom_du_serveur stop nom_du_service
Serveur :
shutdown /s /m \\nom_du_serveur /t 30 /c « BatchStop » /f /d p:4:1
QUSER /SERVER:nom_du_serveur
LOGOFF username /SERVER:nom_du_serveur /V
set PATH=%PATH%;c:\Program Files\pstools
L:\Soft\PsExec\psexec.exe \\nom_du_serveur cmd /c commande
psexec \\nom_du_serveur cmd /c change logon /query
psexec \\nom_du_serveur cmd /c change logon /enable
psexec \\nom_du_serveur cmd /c change logon /disable
locate spfileHYPDEV.ora | while read F; do echo ;echo $F; ls -la $F; done
dir /S * /A-D /B | find /V /C « :: » dir *.txt : liste le contenu du répertoire courant (ayant un nom se terminant par .txt) avec comme options :
| : transmet le résultat de la commande précédente à find find : cherche toutes les occurences :
—————————————————
G:\TST\ECM>dir /S * /A-D /B | find /V /C « :: »
16
G:\TST\ECM>echo %errorlevel%
0
G:\TST\ECM>dir /S *.tru /A-D /B | find /V /C « :: »
File Not Found
0
G:\TST\ECM>echo %errorlevel%
1
G:\TST\ECM>dir /S * /A-D /B | find /V « :: »
G:\TST\ECM\Archive\production.zip_20161012_110217.zip G:\TST\ECM\Archive\supplier.zip_20161012_100435.zip G:\TST\ECM\Archive\supplier.zip_20161012_104136.zip G:\TST\ECM\Archive\supplier.zip_20161012_110116.zip G:\TST\ECM\Archive\supplier.zip_20161012_111016.zip G:\TST\ECM\Archive\supplier.zip_20161012_92028.zip G:\TST\ECM\Archive\supplier.zip_20161012_93628.zip G:\TST\ECM\Log\20161012_100435_Tpush_pile_SUP.log G:\TST\ECM\Log\20161012_104136_Tpush_pile_SUP.log G:\TST\ECM\Log\20161012_110116_Tpush_pile_SUP.log G:\TST\ECM\Log\20161012_110217_Tpush_pile_PRD.log G:\TST\ECM\Log\20161012_111016_Tpush_pile_SUP.log G:\TST\ECM\Log\20161012_92028_Tpush_pile_SUP.log G:\TST\ECM\Log\20161012_93628_Tpush_pile_SUP.log G:\TST\ECM\SAS\SAS_PRD\liste_site_ecm_prd.txt G:\TST\ECM\SAS\SAS_SUP\liste_site_ecm_sup.txt
G:\TST\ECM>dir /S *.tru /A-D /B | find /V « :: »
File Not Found
w_err=0
w_err=$(($w_err+$?))
exit $w_err
set /a w_err=0
set /a w_err=%w_err%+%errorlevel%
exit /B %w_err%
set /a w_err=8
set /a w_err=%w_err%+%errorlevel%
traitement
set /a w_err=%w_err%-8
exit /B %w_err%
http://abs.traduc.org/abs-5.3-fr/ch09s02.html
Bash supporte un nombre surprenant d’opérations de manipulation de chaînes de caractères. Malheureusement, ces outils manquent d’unité. Certains sont un sous-ensemble de la substitution de paramètre et les autres font partie des fonctionnalités de la commande UNIX expr. Ceci produit une syntaxe de commande non unifiée et des fonctionnalités qui se recoupent, sans parler de la confusion engendrée.
Exemple 9.10. Insérer une ligne blanche entre les paragraphes d’un fichier texte
#!/bin/bash # paragraph-space.sh # Insère une ligne blanche entre les paragraphes d'un fichier texte. # Usage: $0 <NOMFICHIER LONGUEUR_MINI=45 # Il peut être nécessaire de changer cette valeur. # Suppose que les lignes plus petites que $LONGUEUR_MINI caractères #+ terminent un paragraphe. while read ligne # Pour toutes les lignes du fichier... do echo "$ligne" # Afficher la ligne. longueur=${#ligne} if [ "$longueur" -lt "$LONGUEUR_MINI" ] then echo # Ajoute une ligne blanche après chaque petite ligne. fi done exit 0
Longueur de sous-chaînes correspondant à un motif au début d’une chaîne
chaineZ=abcABC123ABCabc # |------| echo `expr match "$chaineZ" 'abc[A-Z]*.2'` # 8 echo `expr "$chaineZ" : 'abc[A-Z]*.2'` # 8
chaineZ=abcABC123ABCabc echo `expr index "$chaineZ" C12` # 6 # C position. echo `expr index "$chaineZ" 1c` # 3 # 'c' (à la position #3) correspond avant '1'.
Ceci est l’équivalent le plus proche de strchr() en C.
Si le paramètre $chaine est « * » ou « @ », alors cela extrait les paramètres de position, [36] commençant à $position.
chaineZ=abcABC123ABCabc # 0123456789..... # indexage base 0. echo ${chaineZ:0} # abcABC123ABCabc echo ${chaineZ:1} # bcABC123ABCabc echo ${chaineZ:7} # 23ABCabc echo ${chaineZ:7:3} # 23A # Trois caractères de la sous-chaîne. # Est-il possible d'indexer à partir de la fin de la chaîne ? echo ${chaineZ:-4} # abcABC123ABCabc # Par défaut la chaîne complète, comme dans ${parametre:-default}. # Néanmoins... echo ${chaineZ:(-4)} # Cabc echo ${chaineZ: -4} # Cabc # Maintenant, cela fonctionne. # Des parenthèses ou des espaces ajoutés permettent un échappement du paramètre #+ de position. # Merci, Dan Jacobson, pour cette indication.
Les arguments position et longueur peuvent devenir des « paramètres », c’est-à-dire représentés par une variable, plutôt que par une constante numérique.
Exemple 9.11. Générer « aléatoirement » une chaîne de huit caractères
#!/bin/bash # rand-string.sh # Générer aléatoirement une chaîne de huit caractères. if [ "-n $1" ] # Si présence d'un argument en ligne de commande, then #+ alors l'utiliser comme chaîne de départ. chaine0="$1" else # Sinon, utiliser le PID du script. chaine0="$$" fi POS=2 # On commence en position 2. LONG=8 # Extraction de huit caractères. chaine1=$( echo "$chaine0" | md5sum | md5sum ) # Double mixage : ^^^^^^ ^^^^^^ chainealeatoire="${chaine1:$POS:$LONG}" # Peut se paramétrer ^^^^ ^^^^^ echo "$chainealeatoire" exit $? # bozo$ ./rand-string.sh mon-motdepasse # 1bdd88c4 # Non, ceci n'est pas recommandé #+ comme méthode sûre de génération de mots de passe.
Si le paramètre $chaine est « * » ou « @ », alors ceci extrait un maximum de $longueur du paramètre de position, en commençant à $position.
echo ${*:2} # Affiche le deuxième paramètre de position et les suivants. echo ${@:2} # Identique à ci-dessus. echo ${*:2:3} # Affiche trois paramètres de position, en commençant par le deuxième.
chaineZ=abcABC123ABCabc # 123456789...... # indexage base 1. echo `expr substr $chaineZ 1 2` # ab echo `expr substr $chaineZ 4 3` # ABC
chaineZ=abcABC123ABCabc # ======= echo `expr match "$chaineZ" '\(.[b-c]*[A-Z]..[0-9]\)'` # abcABC1 echo `expr "$chaineZ" : '\(.[b-c]*[A-Z]..[0-9]\)'` # abcABC1 echo `expr "$chaineZ" : '\(.......\)'` # abcABC1 # Toutes les formes ci-dessus donnent un résultat identique.
chaineZ=abcABC123ABCabc # ====== echo `expr match "$chaineZ" '.*\([A-C][A-C][A-C][a-c]*\)'` # ABCabc echo `expr "$chaineZ" : '.*\(......\)'` # ABCabc
chaineZ=abcABC123ABCabc # |----| # |----------| echo ${chaineZ#a*C} # 123ABCabc # Supprime la plus petite correspondance entre 'a' et 'C'. echo ${chaineZ##a*C} # abc # Supprime la plus grande correspondance entre 'a' et 'C'.
Par exemple :
# Renomme tous les fichiers de $PWD #+ en remplaçant le suffixe "TXT" par "txt". # Par exemple, "fichier1.TXT" devient "fichier1.txt" . . . SUFF=TXT suff=txt for i in $(ls *.$SUFF) do mv -f $i ${i%.$SUFF}.$suff # Ne modifie rien *en dehors* de la correspondance la plus courte #+ commençant du côté droit de $i . . . done ### Ceci pourrait être condenser en une ligne si nécessaire. # Thank you, Rory Winston.
chaineZ=abcABC123ABCabc # || # |------------| echo ${chaineZ%b*c} # abcABC123ABCa # Supprime la plus petite correspondance entre 'b' et 'c', à partir de la fin #+ de $chaineZ. echo ${chaineZ%%b*c} # a # Supprime la plus petite correspondance entre 'b' et 'c', à partir de la fin #+ de $chaineZ.
Cet opérateur est utilisé pour générer des noms de fichier.
Exemple 9.12. Convertir des formats de fichiers graphiques avec une modification du nom du fichier
#!/bin/bash # cvt.sh: # Convertit les fichiers image MacPaint contenus dans un répertoire dans le #+ format "pbm". # Utilise le binaire "macptopbm" provenant du paquetage "netpbm", #+ qui est maintenu par Brian Henderson (bryanh@giraffe-data.com). # Netpbm est un standard sur la plupart des distributions Linux. OPERATION=macptopbm SUFFIXE=pbm # Suffixe pour les nouveaux noms de fichiers. if [ -n "$1" ] then repertoire=$1 # Si le nom du répertoire donné en argument au script... else repertoire=$PWD # Sinon, utilise le répertoire courant. fi # Suppose que tous les fichiers du répertoire cible sont des fichiers image # + MacPaint avec un suffixe de nom de fichier ".mac". for fichier in $repertoire/* # Filename globbing. do nomfichier=${fichier%.*c} # Supprime le suffixe ".mac" du nom du fichier #+ ('.*c' correspond à tout ce qui se trouve #+ entre '.' et 'c', inclus). $OPERATION $fichier > $nomfichier.$SUFFIXE # Redirige la conversion vers le nouveau nom du fichier. rm -f $fichier # Supprime le fichier original après sa convertion. echo "$nomfichier.$SUFFIXE" # Trace ce qui se passe sur stdout. done exit 0 # Exercice # -------- # À ce stade, ce script convertit *tous* les fichiers du répertoire courant. # Modifiez le pour qu'il renomme *seulement* les fichiers dont l'extension est #+ ".mac".
Exemple 9.13. Convertir des fichiers audio en ogg
#!/bin/bash # ra2ogg.sh : Convertit des fichiers audio de streaming (*.ra) en ogg. # Utilise le programme "mplayer" : # http://www.mplayerhq.hu/homepage # Vous aurez peut-être besoin d'installer les codecs appropriés #+ pour que ce script fonctionne. # Utilise la bibliothèque "ogg" et "oggenc" : # http://www.xiph.org/ PREFIXE_FICHIER_RESULTAT=${1%%ra} # Supprime le suffixe "ra". SUFFIXE_FICHIER_RESULTAT=wav # Suffixe pour le fichier wav. FICHIER_RESULTAT="$PREFIXE_FICHIER_RESULTAT""$SUFFIXE_FICHIER_RESULTAT" E_SANSARGS=65 if [ -z "$1" ] # Un nom de fichier à convertir doit être spécifié. then echo "Usage: `basename $0` [nom_fichier]" exit $E_SANSARGS fi ########################################################################## mplayer "$1" -ao pcm:file=$FICHIER_RESULTAT oggenc "$FICHIER_RESULTAT" # Corrige l'extension du fichier ajoutée automatiquement pas oggenc. ########################################################################## rm "$FICHIER_RESULTAT" # Supprime le fichier temporaire *.wav. # Si vous voulez le conserver, commentez la ligne ci-dessus. exit $? # Note : # ----- # Sur un site web, cliquer seulement sur un fichier audio *.ram #+ récupère l'URL du fichier audio, le fichier *.ra. # Vous pouvez ensuite utiliser "wget" ou un autre outil similaire #+ pour télécharger vous-même le fichier *.ra. # Exercices : # ---------- # Actuellement, ce script convertit seulement les noms de fichier *.ra. # Ajoutez de la flexibilité en autorisant l'utilisation de *.ram et d'autres noms de fichier. # # Si vous êtes réellement ambitieux, étendez le script pour réaliser automatiquement #+ les téléchargements et les convertions des fichiers audio. # À partir d'une URL, récupérez les fichiers audio (en utilisant "wget") #+ et convertissez-les.
Une simple émulation de getopt en utilisant des constructions d’extraction de sous-chaînes.
#!/bin/bash # getopt-simple.sh # Auteur : Chris Morgan # Utilisé dans le guide ABS avec sa permission. getopt_simple() { echo "getopt_simple()" echo "Les paramètres sont '$*'" until [ -z "$1" ] do echo "Traitement du paramètre : '$1'" if [ ${1:0:1} = '/' ] then tmp=${1:1} # Supprime le '/' devant... parametre=${tmp%%=*} # Extrait le nom. valeur=${tmp##*=} # Extrait la valeur. echo "Paramètre : '$parametre', valeur: '$valeur'" eval $parametre=$valeur fi shift done } # Passe toutes les options à getopt_simple(). getopt_simple $* echo "test vaut '$test'" echo "test2 vaut '$test2'" exit 0 --- sh getopt_example.sh /test=valeur1 /test2=valeur2 Les paramètres sont '/test=valeur1 /test2=valeur2' Traitement du paramètre : '/test=valeur1' Paramètre : 'test', valeur: 'valeur1' Traitement du paramètre : '/test2=valeur2' Paramètre : 'test2', valeur : 'valeur2' test vaut 'valeur1' test2 vaut 'valeur2'
chaineZ=abcABC123ABCabc echo ${chaineZ/abc/xyz} # xyzABC123ABCabc # Remplace la première correspondance de #+ 'abc' avec 'xyz'. echo ${chaineZ//abc/xyz} # xyzABC123ABCxyz # Remplace toutes les correspondances de #+ 'abc' avec 'xyz'.
chaineZ=abcABC123ABCabc echo ${chaineZ/#abc/XYZ} # XYZABC123ABCabc # Remplace la correspondance de fin de #+ 'abc' avec 'XYZ'. echo ${chaineZ/%abc/XYZ} # abcABC123ABCXYZ # Remplace la correspondance de fin de #+ 'abc' avec 'XYZ'.
Un script Bash peut utiliser des fonctionnalités de manipulation de chaînes de caractères de awk comme alternative à ses propres fonctions intégrées.
Exemple 9.15. Autres moyens d’extraire des sous-chaînes
#!/bin/bash # substring-extraction.sh Chaine=23skidoo1 # 012345678 Bash # 123456789 awk # Notez les différents systèmes d'indexation de chaînes : # Bash compte le premier caractère d'une chaîne avec '0'. # Awk compte le premier caractère d'une chaîne avec '1'. echo ${Chaine:2:4} # position 3 (0-1-2), longueur de quatre caractères # skid # L'équivalent awk de ${string:position:longueur} est substr(string,position,longueur). echo | awk ' { print substr("'"${Chaine}"'",3,4) # skid } ' # Envoyé un "echo" vide à awk donne une entrée inutile, et donc permet d'éviter #+ d'apporter un nom de fichier. exit 0
Pour plus d’informations sur la manipulation des chaînes de caractères dans les scripts, référez-vous à la Section 9.3, « Substitution de paramètres » et à la section consacrée à la commande expr. Pour des exemples de scripts, jetez un oeil sur les exemples suivants :
a=$((1+1))
echo $a
2
w_err=0
w_err=$(($w_err+$?))
exit $w_err
Pour ne lister que le « vrai » process hors process Vtom.
grep -Ev "grep|$0"
Exemple pour s’assurer qu’il n’y a qu’un seul process java (vlbid03p)
err=0
echo "Liste des process java" ps auxww | grep java | grep -v grep
errps=$(ps auxww | grep java | grep -Ev "grep|$0" | wc -l) ((err=$errps-1+$err))
exit ${err}
Recherche les fichiers context.xml à partir du point d’arborescence où je suis.
find . -name *web.xml -exec ls -ltrh {} \;
find -iname *web.xml -printf « %u %g %a %s %h/%f\n »
Chercher la chaîne pdtb2 dans les fichiers context.xml
grep pdtb2 $(find . -name « context.xml »)
Recherche des fichers *.dmp depuis hier avec leur date
find . -mtime -1 -name *.dmp -ls | awk ‘{print $8″ « $9 » « $10 » « $11}’
message : mesg: ttyname failed: Inappropriate ioctl for device
ou
stdin: is not a tty
cat /root/.profile
# ~/.profile: executed by Bourne-compatible login shells.
if [ "$BASH" ]; then if [ -f ~/.bashrc ]; then . ~/.bashrc fi fi
mesg n
dernière ligne remplacer
mesg n
par
tty -s && mesg n
Pas de reboot nécessaire pour la prise en compte.
vlbid24p, wctsrv0011 et 12 Ubuntu 18
— Requête pour connaître l’état d’un device de type On/Off :
https://fwd7.mios.com/eric.fougere/domovera37150/35108989/data_request?id=variableget&DeviceNum=38&serviceId=urn:upnp-org:serviceId:SwitchPower1&Variable=Status
— Requête pour modifier l’état d’un device de type On/Off :
https://fwd7.mios.com/eric.fougere/domovera37150/35108989/data_request?id=action&output_format=xml&DeviceNum=38&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=0
— Requête pour connaître la value d’une sonde de température :
https://fwd7.mios.com/eric.fougere/domovera37150/35108989/data_request?id=variableget&DeviceNum=183&serviceId=urn:upnp-org:serviceId:TemperatureSensor1&Variable=CurrentTemperature
https://fwd7.mios.com/eric.fougere/domovera37150/35108989/data_request?id=lu_action&serviceId=urn:micasaverde-com:serviceId:HomeAutomationGateway1&action=RunLua&Code=plus(1,2)
fonction à déclarer dans la partie « Edit Startup Lua » sur la vera
function plus(a,b)
luup.log(a+b)
end
echo date_av : %date%
rem Permet de changer le format de date pour le current user
reg add « HKCU\Control Panel\International » /v sShortDate /d « dd-MM-yyyy » /f
echo date_ap : %date%
for /F « tokens=1-4 delims=- » %%a in (‘echo %date:~0,10%’) do set w_date=%%c%%b%%a
echo w_date : %w_date%
set horo=%w_date%_%w_time%
rem Horodatage d’un fichier log
set f_log=%d_log%\%horo%_%TOM_JOB%.log
On peut aussi changer temporairement le format de date.
rem save the existing format definition
for /f "skip=2 tokens=3" %%a in ('reg query "HKCU\Control Panel\International" /v sShortDate') do set FORMAT=%%a
rem set ISO specific format definition
reg add "HKCU\Control Panel\International" /v sShortDate /t REG_SZ /f /d yyyy-MM-dd 1>nul:
rem query the date in the ISO specific format
set ISODATE=%DATE%
rem restore previous format definition
reg add "HKCU\Control Panel\International" /v sShortDate /t REG_SZ /f /d %FORMAT% 1>nul:
#!/bin/bash
ps -ef|grep tomcat |grep -v grep
sh /etc/init.d/tomcat6 stop
ps -ef|grep tomcat |grep -v grep
fic_log=$1
echo fic_log : ${fic_log}
w_date=$(date +%Y%m%d_%H%M%S)
mv ${fic_log} ${fic_log}.${w_date}.log
gzip ${fic_log}.${w_date}.log
ls -latr ${fic_log}*
Pour chaque fichier talend-log-central.log.2016-06* un fichier talend-log-central.log.2016-06*.gz sera créé.
gzip talend-log-central.log.2016-06.gz talend-log-central.log.2016-06*
exemple :
root@vlbid16x:/soft/Talend-6.1.1/logserv/elasticsearch-1.5.2/logs# ll -h talend-log-central.log.2016-06* -rw-rw-r-- 1 talenduser talenduser 1.3M Jun 2 23:59 talend-log-central.log.2016-06-01 -rw-rw-r-- 1 talenduser talenduser 1.3M Jun 3 23:59 talend-log-central.log.2016-06-02 -rw-rw-r-- 1 talenduser talenduser 1.3M Jun 4 23:59 talend-log-central.log.2016-06-03 -rw-rw-r-- 1 talenduser talenduser 1.3M Jun 5 23:59 talend-log-central.log.2016-06-04 -rw-rw-r-- 1 talenduser talenduser 1.3M Jun 6 23:59 talend-log-central.log.2016-06-05 -rw-rw-r-- 1 talenduser talenduser 1.4M Jun 7 23:59 talend-log-central.log.2016-06-06 -rw-rw-r-- 1 talenduser talenduser 1.4M Jun 8 23:59 talend-log-central.log.2016-06-07 -rw-rw-r-- 1 talenduser talenduser 1.4M Jun 9 23:59 talend-log-central.log.2016-06-08 -rw-rw-r-- 1 talenduser talenduser 1.4M Jun 10 23:59 talend-log-central.log.2016-06-09 -rw-rw-r-- 1 talenduser talenduser 1.3M Jun 11 23:59 talend-log-central.log.2016-06-10 -rw-rw-r-- 1 talenduser talenduser 1.3M Jun 12 23:59 talend-log-central.log.2016-06-11 -rw-rw-r-- 1 talenduser talenduser 871K Jun 13 13:53 talend-log-central.log.2016-06-12 -rw-rw-r-- 1 talenduser talenduser 726K Jun 14 23:59 talend-log-central.log.2016-06-13 -rw-rw-r-- 1 talenduser talenduser 1.3M Jun 15 23:59 talend-log-central.log.2016-06-14 -rw-rw-r-- 1 talenduser talenduser 1.3M Jun 16 23:59 talend-log-central.log.2016-06-15 -rw-rw-r-- 1 talenduser talenduser 1.3M Jun 17 23:59 talend-log-central.log.2016-06-16 -rw-rw-r-- 1 talenduser talenduser 1.3M Jun 18 23:59 talend-log-central.log.2016-06-17 -rw-rw-r-- 1 talenduser talenduser 1.3M Jun 19 23:59 talend-log-central.log.2016-06-18 -rw-rw-r-- 1 talenduser talenduser 1.3M Jun 20 23:59 talend-log-central.log.2016-06-19 -rw-rw-r-- 1 talenduser talenduser 1.3M Jun 21 23:59 talend-log-central.log.2016-06-20 -rw-rw-r-- 1 talenduser talenduser 1.3M Jun 22 23:59 talend-log-central.log.2016-06-21 -rw-rw-r-- 1 talenduser talenduser 1.2M Jun 23 23:59 talend-log-central.log.2016-06-22 -rw-rw-r-- 1 talenduser talenduser 663K Jun 24 12:17 talend-log-central.log.2016-06-23 -rw-rw-r-- 1 talenduser talenduser 4.6G Jun 25 23:59 talend-log-central.log.2016-06-24 -rw-rw-r-- 1 talenduser talenduser 5.4G Jun 25 23:59 talend-log-central.log.2016-06-25 -rw-rw-r-- 1 talenduser talenduser 2.7G Jun 27 23:59 talend-log-central.log.2016-06-26 -rw-rw-r-- 1 talenduser talenduser 865M Jun 28 23:59 talend-log-central.log.2016-06-27 -rw-rw-r-- 1 talenduser talenduser 2.2G Jun 29 23:59 talend-log-central.log.2016-06-28 -rw-rw-r-- 1 talenduser talenduser 519M Jun 30 23:59 talend-log-central.log.2016-06-29 -rw-rw-r-- 1 talenduser talenduser 2.1G Jul 1 23:59 talend-log-central.log.2016-06-30 devient root@vlbid16x:/soft/Talend-6.1.1/logserv/elasticsearch-1.5.2/logs# ll -h talend-log-central.log.2016-06* -rw-rw-r-- 1 talenduser talenduser 48K Jun 2 23:59 talend-log-central.log.2016-06-01.gz -rw-rw-r-- 1 talenduser talenduser 48K Jun 3 23:59 talend-log-central.log.2016-06-02.gz -rw-rw-r-- 1 talenduser talenduser 47K Jun 4 23:59 talend-log-central.log.2016-06-03.gz -rw-rw-r-- 1 talenduser talenduser 47K Jun 5 23:59 talend-log-central.log.2016-06-04.gz -rw-rw-r-- 1 talenduser talenduser 47K Jun 6 23:59 talend-log-central.log.2016-06-05.gz -rw-rw-r-- 1 talenduser talenduser 28K Jun 7 23:59 talend-log-central.log.2016-06-06.gz -rw-rw-r-- 1 talenduser talenduser 29K Jun 8 23:59 talend-log-central.log.2016-06-07.gz -rw-rw-r-- 1 talenduser talenduser 28K Jun 9 23:59 talend-log-central.log.2016-06-08.gz -rw-rw-r-- 1 talenduser talenduser 29K Jun 10 23:59 talend-log-central.log.2016-06-09.gz -rw-rw-r-- 1 talenduser talenduser 47K Jun 11 23:59 talend-log-central.log.2016-06-10.gz -rw-rw-r-- 1 talenduser talenduser 47K Jun 12 23:59 talend-log-central.log.2016-06-11.gz -rw-rw-r-- 1 talenduser talenduser 19K Jun 13 13:53 talend-log-central.log.2016-06-12.gz -rw-rw-r-- 1 talenduser talenduser 28K Jun 14 23:59 talend-log-central.log.2016-06-13.gz -rw-rw-r-- 1 talenduser talenduser 47K Jun 15 23:59 talend-log-central.log.2016-06-14.gz -rw-rw-r-- 1 talenduser talenduser 47K Jun 16 23:59 talend-log-central.log.2016-06-15.gz -rw-rw-r-- 1 talenduser talenduser 47K Jun 17 23:59 talend-log-central.log.2016-06-16.gz -rw-rw-r-- 1 talenduser talenduser 47K Jun 18 23:59 talend-log-central.log.2016-06-17.gz -rw-rw-r-- 1 talenduser talenduser 47K Jun 19 23:59 talend-log-central.log.2016-06-18.gz -rw-rw-r-- 1 talenduser talenduser 47K Jun 20 23:59 talend-log-central.log.2016-06-19.gz -rw-rw-r-- 1 talenduser talenduser 47K Jun 21 23:59 talend-log-central.log.2016-06-20.gz -rw-rw-r-- 1 talenduser talenduser 47K Jun 22 23:59 talend-log-central.log.2016-06-21.gz -rw-rw-r-- 1 talenduser talenduser 46K Jun 23 23:59 talend-log-central.log.2016-06-22.gz -rw-rw-r-- 1 talenduser talenduser 26K Jun 24 12:17 talend-log-central.log.2016-06-23.gz -rw-rw-r-- 1 talenduser talenduser 106M Jun 25 23:59 talend-log-central.log.2016-06-25.gz -rw-rw-r-- 1 talenduser talenduser 48M Jun 27 23:59 talend-log-central.log.2016-06-26.gz -rw-rw-r-- 1 talenduser talenduser 24M Jun 28 23:59 talend-log-central.log.2016-06-27.gz -rw-rw-r-- 1 talenduser talenduser 39M Jun 29 23:59 talend-log-central.log.2016-06-28.gz -rw-rw-r-- 1 talenduser talenduser 14M Jun 30 23:59 talend-log-central.log.2016-06-29.gz -rw-rw-r-- 1 talenduser talenduser 35M Jul 1 23:59 talend-log-central.log.2016-06-30.gz
gunzip talend-log-central.log.2016-06-30.gz
Les scripts lancés au démarrage sont dans le fichier /etc/rc.local Ce fichier doit être exécutable
ll /etc/rc.local
chmod +x /etc/rc.local
lrwxrwxrwx. 1 root root 13 Sep 22 16:11 /etc/rc.local -> rc.d/rc.local
Exemple :
[root@vldtb02x ~]# cat /etc/rc.local #!/bin/bash # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES # # It is highly advisable to create own systemd services or udev rules # to run scripts during boot instead of using this file. # # In contrast to previous versions due to parallel execution during boot # this script will NOT be run after all other services. # # Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure # that this script will be executed during boot.
# touch /var/lock/subsys/local
echo Start Vtom Agent . /etc/init.d/boot_start_vtom.sh
echo Start Oracle . /etc/init.d/start_oracle.sh
echo Zabbix Agent . /etc/init.d/zabbix_agent_start.sh
echo su -l ora112 -c /exploit/scripts/start_oracle.sh> /etc/init.d/start_oracle.sh
Ajouter une colonne
ALTER TABLE schema.table ADD (champ type(longueur));
ALTER TABLE ESVPRD.REF_LOC_CUSTOMERS_RLC ADD (ID_SITE_IMP VARCHAR2(36 BYTE));