Aider un novice à créer un script ssh

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Aider un novice à créer un script ssh

Message le Jeu Mar 23, 2006 15:08

Hug !

Alors voila, j'ai un petit problème:
Je dois créer un script en ssh qui pourra être appellé par un cron et qui me permettra de modifier deux variables mysql et relancer le service mysql.
Seulement, le problème est que je n'y connais pas grand chose encore en commande ssh, donc si quelqu'un pouvait m'aider.
Peut être que pour vous ce sera super simple, ça n'a pas l'air complexe comme ça, mais lorsque l'on ne connait pas, c'est moins évident....

Donc voila les deux variables à modifier:

max_user_connections = 15
max_connections = 200


+ relancer le service mysql.

En espérant qu'une âme charitable veuille bien m'aider.

Merci.

Thierry

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Jeu Mar 23, 2006 18:10

:?

Bon pour ce que j'en sais, normalement en ligne de commande il faut un truc comme cela:

set variable = max_user_connections = 15
set variable = max_connections = 200


Et pour arrêter et redémarrer le service mysql:

/etc/ini.d/mysql stop (puis start)

Je pense qu'avant les set variable il faut se connecter à mysql...
soit:
mysql -h localhost -u login -p password

personne ne peut m'aider ?

:?

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Jeu Mar 23, 2006 20:41

8O

merci :)

:cry:


guicara
WRInaute accro
WRInaute accro
 
Messages: 2297
Inscription: Jeu Fév 02, 2006 20:40

Message le Jeu Mar 23, 2006 20:42

Patience !
Tous le monde ne connait pas le php !!

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Jeu Mar 23, 2006 20:56

Non en php je n'ai a vrai dire pas trop de problème !

C'est ssh, et là je crain effectivement qu'il n'y a pas grande monde pour du soutien..

m'enfin.

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Jeu Mar 23, 2006 21:41

Que signifie le /dev/null 2>&1 ?

Je parle là du 2>&1, car je ne trouve pas d'explication la dessus.

J'ai trouvé cela qui en parle:
http://www.spi.ens.fr/~beig/systeme/shell.html

Mais je ne comprends pas. :?

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Jeu Mar 23, 2006 22:13

Ou trouver de l'aide sur ce sujet ?

Avez vous des forums qui puissent m'aider ?

spidetra
WRInaute accro
WRInaute accro
 
Messages: 1500
Inscription: Lun Juil 07, 2003 13:06

Message le Jeu Mar 23, 2006 23:20

tu as l'air vraiment désespéré, je vais voir si je peux t'aider un peu.

Forum => Essaye sur www.developez.com
http://www.developpez.net/forums/viewforum.php?f=5

Ce que je ne sais pas faire :
- créer un tunnel ssh pour exécuter des ordres mysql et modifier les valeurs de tes 2 variables.

Pour redémarrer le serveur mysql :
il te faut exécuter la commande ( il manque le path devant, qui dépend de ton système ) :
mysqld restart
ou
safe_mysqld restart

Cette commande peut s'éxécuter dans un cron, sans avoir besoin d'un script shell.

Si tu veux passer par un cron tu pourrais faire :
Code: Tout sélectionner
Tout les jours à 23H30, tu redémarre mysql :
$shell> crontab -e
30 23 * * * safe_mysqld restart >>/tmp/log.txt


Ce simple cron pourrait résoudre ton pb pour redémarrer le serveur mysql.

Toi ce que tu veux écrire c'est un script shell. Et modifier des variables avant de faire le reboot.
Come je ne sais pas faire, et que je n'ai pas de tuto sous la main, je vais juste te donner quelques notions.

ssh : c'est un protocole de communication, c'est aussi le nom d'un programme.

Il existe +sieurs sortes de shell : sh, bash, bourne shell.
Chaque shell peut avoir ses spécificités.

Que signifie :
1 > /dev/null 2>&1 ?


1 => correspond à la sortie standard => stdin => ce que ton prg écrit
2 => correspond à la sortie d'erreur
/dev/null => c'est l'équivalent de la poubelle sous windows

1 > /dev/null 2>&1 signifie :
Je re-dirige la sortie standard vers la poubelle. Et je redirige la sortie d'erreur vers la sortie standard.
Dans ton cas tout part à la poubelle

Tu aurais pu écrire :
Code: Tout sélectionner
1>log.txt 2>err.txt

à la fin de l'éxécution de ton script tu aurais eu 2 fichier : log.txt et err.txt
log.txt => le log d'éxécution de ton script
err.txt => les erreurs de ton script

Voici un exemple de script :
Code: Tout sélectionner
#!/bin/sh
# La première ligne sert à spécifier quel shell tu veux excéuter. ici sh

# if no args specified, show usage
# $# correspond aux nbr d'argument de la ligne de cmd
# le if sert à tester le nbr d'argument
if [ $# = 0 ]; then
  echo "man de ton script shell"
  echo "La comande echo sert à écrire sur la sortie standard"
  echo "bla bla"
  echo "bla bla"
  exit 1     # Tu quitte ton script
fi   # fin du if

# get arguments
# kes arguments se nomment $1, $2, $3, etc. Tu peux donc les récupérer
COMMAND=$1
TOTO=$2
DIR=$3
etc....

# Tu peux affecter des cmd unix à des variables
THIS_DIR=`dirname "$THIS"`
TOTO_HOME=`cd "$THIS_DIR/.." ; pwd`

# Tester l'existence de certains répertoire ( -d )
# Si le rép TOTO_HOME/build/classes existe, alors je modifie ma variable
# CLASSPATH
if [ -d "$TOTO_HOME/build/classes" ]; then
  CLASSPATH=${CLASSPATH}:$TOTO_HOME/build/classes
fi

# faire des boucles sur des patterns de fichiers dans des rep
for f in $TOTO_HOME/toto-*.jar; do
  CLASSPATH=${CLASSPATH}:$f;
done # finde la boucle for

# ET CE QUI EST LE PLUS INTERESSANT POUR TOI
#EXECUTER DES COMMANDES
# run it
exec "$JAVA" $JAVA_HEAP_MAX $TOTO_OPTS -classpath "$CLASSPATH" $CLASS toto"



Pour ton pb précis tu aurais un truc du style :


Code: Tout sélectionner
#/bin/sh
# récupérer les params de la ligne de cmd, si tu en as besoin ( le #password par exemple
# get the command line param
if [ $# < 3 ]; then
  echo "usage : il faut rentrer un password max_user_connection max_connection"
   exit 1     # Tu quitte ton script
fi   # fin du if

PASSWD = $1
MAX_USER_CONNECTION = $2
MAX_CONNECTION = $3
exec "mysql -h localhost -u login -p password"


Le pb c'est après le exec. Je ne sais pas ce qu'il faut faire pour passer les params à mysql ?
Voilà une première piste, en espérant que tu puisse trouver une aide plus utile.

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Ven Mar 24, 2006 8:02

Merci beaucoup de ton aide.

Pour redémarrer mysql c'est donc bon.

Ton dernier petit script est (je crois) ce que je recherche.
un script en .sh que je puisse appeller.

En revanche le exec c'est en sh ? (ce n'est pas du php ?)

Pour modifier une variable en ssh en étant connecté à mysql il faut faire cela:
set global max_user_connexion=10;

L'autre variable je n'en ai finallement pas besoin.

En revanche lorsque je veux mettre max_user_connexion = 0 (pas de limite), ça ne fonctionne pas, il me le met à 1. 8O

Merci beaucoup de ton aide.

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Ven Mar 24, 2006 8:48

J'ai trouvé une alternative en php.

En revanche si quelqu'un peut m'aider sur un truc:

lorsque je met max_user_connections=0 (pas de limite)
comme indiqué dans la doc.

Est bien il me le fou à 1...et la pb !

Avez vous une idée ? Savez vous comment faire please ?

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Ven Mar 24, 2006 20:29

:? :? :(

J'ai ce dernier problème avec la modificaiton de max_user_connections = 0.

Savez vous ou je peux trouver de l'aide sur un forum spécialisé la dedans, parce qu'apparemment, c'est plus suptile que ça...

maddanny
WRInaute impliqué
WRInaute impliqué
 
Messages: 282
Inscription: Mar Mar 22, 2005 23:19

Message le Sam Mar 25, 2006 3:41

C'est simple: ile ne faut pas le faire !
Le nombre max d'utilisateurs mysql est une donnée critique, si ce parametre est trop haut tu vas surcharger ton serveur et cela va t'apporter un grand nombre de problemes ...
Jette un coup d'oeil à la doc MySql, ils donnent pas mal de conseils pour calculer la valeux max.

Mais attention, augmenter max_user_connections ne sert à rien si tu ne modifies pas les limites systeme de ton noyau (nombre de fichiers ouverts, etc etc)


MADdanny

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Sam Mar 25, 2006 7:51

maddanny a écrit:C'est simple: ile ne faut pas le faire !
Le nombre max d'utilisateurs mysql est une donnée critique, si ce parametre est trop haut tu vas surcharger ton serveur et cela va t'apporter un grand nombre de problemes ...

Non, à ce niveau là, je maîtrise la chose.
Il me faut juste ouvrir plus de droit à un moment donné, puis je referme.
Là, n'est pas le problème.

maddanny a écrit:Jette un coup d'oeil à la doc MySql, ils donnent pas mal de conseils pour calculer la valeux max.

Ben, je veux bien, as-tu le lien ?
(même si j'ai déjà parcourue la doc, peut être, est-ce une autre page...)

maddanny a écrit:Mais attention, augmenter max_user_connections ne sert à rien si tu ne modifies pas les limites systeme de ton noyau (nombre de fichiers ouverts, etc etc)

A ce niveau, c'est bon également.
Le système permet de grérer par défaut plusieurs milliers de fichiers ! ;)


Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par Julien Coquet, expert certifié officiellement par Google Analytics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités