Overview

Namespaces

  • GAubry
    • ErrorHandler
    • Helpers
    • Logger
    • Shell
  • Himedia
    • Padocc
      • DB
      • Minifier
      • Numbering
      • Properties
      • Task
        • Base
        • Extended
  • None
  • Psr
    • Log

Classes

  • PathStatus
  • ShellAdapter
  • Overview
  • Namespace
  • Class
  • Tree
  • Deprecated
  • Todo

Class ShellAdapter

Namespace: GAubry\Shell
Located at shell/src/GAubry/Shell/ShellAdapter.php
Methods summary
public
# __construct( Psr\Log\LoggerInterface $oLogger, array $aConfig = array() )

Constructor.

Constructor.

Parameters

$oLogger
Psr\Log\LoggerInterface
$oLogger Used to log exectued shell commands
$aConfig
array
$aConfig see $aDefaultConfig
public array
# parallelize( array $aValues, string $sPattern, integer $iMax )

Launch parallel processes running pattern filled with each of specified values. If number of values is greater than $iMax, then several batches are launched.

Launch parallel processes running pattern filled with each of specified values. If number of values is greater than $iMax, then several batches are launched.

Example: $this->parallelize(array('user1@server', 'user2@server'), "ssh [] /bin/bash <<EOF\nls -l\nEOF\n", 2); Example: $this->parallelize(array('a', 'b'), 'cat /path/to/resources/[].txt', 2);

Parameters

$aValues
array
$aValues liste de valeurs qui viendront remplacer le(s) '[]' du pattern
$sPattern
string
$sPattern pattern possédant une ou plusieurs occurences de paires de crochets vides '[]' qui seront remplacées dans les processus lancés en parallèle par l'une des valeurs spécifiées.
$iMax
integer
$iMax nombre maximal de processus lancés en parallèles

Returns

array
liste de tableau associatif : array( array( 'value' => (string)"l'une des valeurs de $aValues", 'error_code' => (int)code de retour Shell, 'elapsed_time' => (int) temps approximatif en secondes, 'cmd' => (string) commande shell exécutée, 'output' => (string) sortie standard, 'error' => (string) sortie d'erreur standard, ), ... )

Throws

RuntimeException
si le moindre code de retour Shell non nul apparaît.
RuntimeException
si une valeur hors de $aValues apparaît dans les entrées 'value'.
RuntimeException
s'il manque des valeurs de $aValues dans le résultat final.
public array
# exec( string $sCmd )

Exécute la commande shell spécifiée et retourne la sortie découpée par ligne dans un tableau. En cas d'erreur shell (code d'erreur <> 0), lance une exception incluant le message d'erreur.

Exécute la commande shell spécifiée et retourne la sortie découpée par ligne dans un tableau. En cas d'erreur shell (code d'erreur <> 0), lance une exception incluant le message d'erreur.

Parameters

$sCmd
string
$sCmd

Returns

array
tableau indexé du flux de sortie shell découpé par ligne

Throws

RuntimeException
en cas d'erreur shell
public array
# execSSH( string $sPatternCmd, string $sParam )

Exécute la commande shell spécifiée en l'encapsulant au besoin dans une connexion SSH pour atteindre les hôtes distants.

Exécute la commande shell spécifiée en l'encapsulant au besoin dans une connexion SSH pour atteindre les hôtes distants.

Parameters

$sPatternCmd
string
$sPatternCmd commande au format printf
$sParam
string
$sParam paramètre du pattern $sPatternCmd, permettant en plus de décider si l'on doit encapsuler la commande dans un SSH (si serveur distant) ou non.

Returns

array
tableau indexé du flux de sortie shell découpé par ligne

Throws

RuntimeException
en cas d'erreur shell

See

GAubry\Shell\ShellAdapter::isRemotePath()
public string
# buildSSHCmd( string $sPatternCmd, string $sParam )

Retourne la commande Shell spécifiée envoyée à sprintf avec $sParam, et encapsule au besoin le tout dans une connexion SSH pour atteindre les hôtes distants (si $sParam est un hôte distant).

Retourne la commande Shell spécifiée envoyée à sprintf avec $sParam, et encapsule au besoin le tout dans une connexion SSH pour atteindre les hôtes distants (si $sParam est un hôte distant).

Parameters

$sPatternCmd
string
$sPatternCmd commande au format printf
$sParam
string
$sParam paramètre du pattern $sPatternCmd, permettant en plus de décider si l'on doit encapsuler la commande dans un SSH (si serveur distant) ou non.

Returns

string
la commande Shell spécifiée envoyée à sprintf avec $sParam, et encapsule au besoin le tout dans une connexion SSH pour atteindre les hôtes distants (si $sParam est un hôte distant).

See

GAubry\Shell\ShellAdapter::isRemotePath()
public integer
# getPathStatus( string $sPath )

Retourne l'une des constantes de Shell_PathStatus, indiquant pour le chemin spécifié s'il est inexistant, un fichier, un répertoire, un lien symbolique sur fichier ou encore un lien symbolique sur répertoire.

Retourne l'une des constantes de Shell_PathStatus, indiquant pour le chemin spécifié s'il est inexistant, un fichier, un répertoire, un lien symbolique sur fichier ou encore un lien symbolique sur répertoire.

Les éventuels slash terminaux sont supprimés. Si le statut est différent de inexistant, l'appel est mis en cache. Un appel à remove() s'efforce de maintenir cohérent ce cache.

Le chemin spécifié peut concerner un hôte distant (user@server:/path), auquel cas un appel SSH sera effectué.

Parameters

$sPath
string
$sPath chemin à tester, de la forme [user@server:]/path

Returns

integer
l'une des constantes de Shell_PathStatus

Throws

RuntimeException
en cas d'erreur shell

See

Shell_PathStatus
GAubry\Shell\ShellAdapter::$_aFileStatus
public array
# getParallelSSHPathStatus( string $sPath, array $aServers )

Pour chaque serveur retourne l'une des constantes de Shell_PathStatus, indiquant pour le chemin spécifié s'il est inexistant, un fichier, un répertoire, un lien symbolique sur fichier ou encore un lien symbolique sur répertoire.

Pour chaque serveur retourne l'une des constantes de Shell_PathStatus, indiquant pour le chemin spécifié s'il est inexistant, un fichier, un répertoire, un lien symbolique sur fichier ou encore un lien symbolique sur répertoire.

Comme getPathStatus(), mais sur une liste de serveurs.

Les éventuels slash terminaux sont supprimés. Si le statut est différent de inexistant, l'appel est mis en cache. Un appel à remove() s'efforce de maintenir cohérent ce cache.

Parameters

$sPath
string
$sPath chemin à tester, sans mention de serveur
$aServers
array
$aServers liste de serveurs sur lesquels faire la demande de statut

Returns

array
tableau associatif listant par serveur (clé) le status (valeur, constante de Shell_PathStatus)

Throws

RuntimeException
en cas d'erreur shell

See

GAubry\Shell\ShellAdapter::getPathStatus()
public array
# isRemotePath( string $sPath )

Retourne un triplet dont la 1re valeur (bool) indique si le chemin spécifié commence par '[user@]servername_or_ip:', la 2e (string) est le serveur (ou chaîne vide si $sPath est local), et la 3e (string) est le chemin dépourvu de l'éventuel serveur.

Retourne un triplet dont la 1re valeur (bool) indique si le chemin spécifié commence par '[user@]servername_or_ip:', la 2e (string) est le serveur (ou chaîne vide si $sPath est local), et la 3e (string) est le chemin dépourvu de l'éventuel serveur.

Parameters

$sPath
string
$sPath chemin au format [[user@]servername_or_ip:]/path

Returns

array
triplet dont la 1re valeur (bool) indique si le chemin spécifié commence par '[user@]servername_or_ip:', la 2e (string) est le serveur (ou chaîne vide si $sPath est local), et la 3e (string) est le chemin dépourvu de l'éventuel serveur.
public array
# copy( string $sSrcPath, string $sDestPath, boolean $bIsDestFile = false )

Copie un chemin vers un autre. Les jokers '' et '?' sont autorisés. Par exemple copiera le contenu de $sSrcPath si celui-ci se termine par '/'. Si le chemin de destination n'existe pas, il sera créé.

Copie un chemin vers un autre. Les jokers '' et '?' sont autorisés. Par exemple copiera le contenu de $sSrcPath si celui-ci se termine par '/'. Si le chemin de destination n'existe pas, il sera créé.

Parameters

$sSrcPath
string
$sSrcPath chemin source, au format [[user@]hostname_or_ip:]/path
$sDestPath
string
$sDestPath chemin de destination, au format [[user@]hostname_or_ip:]/path
$bIsDestFile
boolean
$bIsDestFile précise si le chemin de destination est un simple fichier ou non, information nécessaire si l'on doit créer une partie de ce chemin si inexistant

Returns

array
tableau indexé du flux de sortie shell découpé par ligne

Throws

RuntimeException
en cas d'erreur shell
public array
# createLink( string $sLinkPath, string $sTargetPath )

Crée un lien symbolique de chemin $sLinkPath vers la cible $sTargetPath.

Crée un lien symbolique de chemin $sLinkPath vers la cible $sTargetPath.

Parameters

$sLinkPath
string
$sLinkPath nom du lien, au format [[user@]hostname_or_ip:]/path
$sTargetPath
string
$sTargetPath cible sur laquelle faire pointer le lien, au format [[user@]hostname_or_ip:]/path

Returns

array
tableau indexé du flux de sortie shell découpé par ligne

Throws

DomainException
si les chemins référencent des serveurs différents
RuntimeException
en cas d'erreur shell
public string
# escapePath( string $sPath )

Entoure le chemin de guillemets doubles en tenant compte des jokers '' et '?' qui ne les supportent pas. Par exemple : '/a/b/img*jpg', donnera : '"/a/b/img""jpg"'. Pour rappel, '*' vaut pour 0 à n caractères, '?' vaut pour exactement 1 caractère (et non 0 à 1).

Entoure le chemin de guillemets doubles en tenant compte des jokers '' et '?' qui ne les supportent pas. Par exemple : '/a/b/img*jpg', donnera : '"/a/b/img""jpg"'. Pour rappel, '*' vaut pour 0 à n caractères, '?' vaut pour exactement 1 caractère (et non 0 à 1).

Parameters

$sPath
string
$sPath

Returns

string
public array
# remove( string $sPath )

Supprime le chemin spécifié, répertoire ou fichier, distant ou local. S'efforce de maintenir cohérent le cache de statut de chemins rempli par getPathStatus().

Supprime le chemin spécifié, répertoire ou fichier, distant ou local. S'efforce de maintenir cohérent le cache de statut de chemins rempli par getPathStatus().

Parameters

$sPath
string
$sPath chemin à supprimer, au format [[user@]hostname_or_ip:]/path

Returns

array
tableau indexé du flux de sortie shell découpé par ligne

Throws

DomainException
si chemin invalide (garde-fou)
RuntimeException
en cas d'erreur shell

See

GAubry\Shell\ShellAdapter::getPathStatus()
public array
# backup( string $sSrcPath, string $sBackupPath )

Effectue un tar gzip du répertoire $sSrcPath dans $sBackupPath.

Effectue un tar gzip du répertoire $sSrcPath dans $sBackupPath.

Parameters

$sSrcPath
string
$sSrcPath au format [[user@]hostname_or_ip:]/path
$sBackupPath
string
$sBackupPath au format [[user@]hostname_or_ip:]/path

Returns

array
tableau indexé du flux de sortie shell découpé par ligne

Throws

RuntimeException
en cas d'erreur shell
public
# mkdir( string $sPath, string $sMode = '', array $aValues = array() )

Crée le chemin spécifié s'il n'existe pas déjà, avec les droits éventuellement transmis dans tous les cas.

Crée le chemin spécifié s'il n'existe pas déjà, avec les droits éventuellement transmis dans tous les cas.

Parameters

$sPath
string
$sPath chemin à créer, au format [[user@]hostname_or_ip:]/path
$sMode
string
$sMode droits utilisateur du chemin appliqués même si ce dernier existe déjà. Par exemple '644'.
$aValues
array
$aValues liste de valeurs (string) optionnelles pour générer autant de demandes de synchronisation en parallèle. Dans ce cas ces valeurs viendront remplacer l'une après l'autre les occurences de crochets vide '[]' présents dans $sSrcPath ou $sDestPath.

Throws

RuntimeException
en cas d'erreur shell
public array
# sync( string $sSrcPath, string $sDestPath, array $aValues = array(), array $aIncludedPaths = array(), array $aExcludedPaths = array(), string $sRsyncPattern = '' )

Synchronise une source avec une ou plusieurs destinations.

Synchronise une source avec une ou plusieurs destinations.

Parameters

$sSrcPath
string
$sSrcPath au format [[user@]hostname_or_ip:]/path
$sDestPath
string
$sDestPath chaque destination au format [[user@]hostname_or_ip:]/path
$aValues
array
$aValues liste de valeurs (string) optionnelles pour générer autant de demandes de synchronisation en parallèle. Dans ce cas ces valeurs viendront remplacer l'une après l'autre les occurences de crochets vide '[]' présents dans $sSrcPath ou $sDestPath.
$aIncludedPaths
array
$aIncludedPaths chemins à transmettre aux paramètres --include de la commande shell rsync. Il précéderons les paramètres --exclude.
$aExcludedPaths
array
$aExcludedPaths chemins à transmettre aux paramètres --exclude de la commande shell rsync
$sRsyncPattern
string
$sRsyncPattern

Returns

array
tableau indexé du flux de sortie shell des commandes rsync exécutées, découpé par ligne et analysé par _resumeSyncResult()
private array
# _resumeSyncResult( array $aRawResult )

Analyse la sortie shell de commandes rsync et en propose un résumé.

Analyse la sortie shell de commandes rsync et en propose un résumé.

Exemple : - entrée : Number of files: 1774 Number of files transferred: 2 Total file size: 64093953 bytes Total transferred file size: 178 bytes Literal data: 178 bytes Matched data: 0 bytes File list size: 39177 File list generation time: 0.013 seconds File list transfer time: 0.000 seconds Total bytes sent: 39542 Total bytes received: 64 sent 39542 bytes received 64 bytes 26404.00 bytes/sec total size is 64093953 speedup is 1618.29 - sortie : Number of transferred files ( / total): 2 / 1774 Total transferred file size ( / total): <1 / 61 Mio

Parameters

$aRawResult
array
$aRawResult tableau indexé du flux de sortie shell de la commande rsync, découpé par ligne

Returns

array
du tableau indexé du flux de sortie shell de commandes rsync résumé et découpé par ligne
Properties summary
private array $_aFileStatus
#

Cache of status of file system paths.

Cache of status of file system paths.

See

GAubry\Shell\ShellAdapter::getPathStatus()
Shell_PathStatus
private Psr\Log\LoggerInterface $_oLogger
#

PSR-3 logger

PSR-3 logger

See

GAubry\Shell\ShellAdapter::exec()
private static array $aDefaultConfig array( // (string) Path of Bash: 'bash_path' => '/bin/bash', // (string) List of '-o option' options used for all SSH and SCP commands: 'ssh_options' => '-o ServerAliveInterval=10 -o StrictHostKeyChecking=no -o ConnectTimeout=10 -o BatchMode=yes', // (int) Maximal number of command shells launched simultaneously (parallel processes): 'parallelization_max_nb_processes' => 10, // (int) Maximal number of parallel RSYNC (overriding 'parallelization_max_nb_processes'): 'rsync_max_nb_processes' => 5, // (array) List of exclusion patterns for RSYNC command (converted into list of '--exclude <pattern>'): 'default_rsync_exclude' => array( '.bzr/', '.cvsignore', '.git/', '.gitignore', '.svn/', 'cvslog.*', 'CVS', 'CVS.adm' ) )
#

Default configuration.

Default configuration.

private array $_aConfig
#

Current configuration.

Current configuration.

See

mixed
private string $sParallelizeCmdPattern
#

Bash pattern command to call 'parallelize.sh' script.

Bash pattern command to call 'parallelize.sh' script.

Platform for Automatized Deployments with pOwerful Concise Configuration API documentation generated by ApiGen 2.8.0