Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.
nombre réponses : 25

#1 Re : -1 »  RESOLU Problèmes avec les conditions!!!! » Le 09/06/2014, à 15:03

Totor
Réponses : 9
tiramiseb a écrit :

2/ on ne peut pas affecter une valeur aux variables d'arguments ($1, $2, etc)

Ce n'est pas tout à fait vrai.
Il est possible d'affecter des valeurs aux paramètres de position mais on ne peut pas le faire individuellement.

Ceci permet de remplacer les paramètres de position 1, 2 et 3 et de réinitialiser tous les autres :

set -- val1 val2 val3

#2 Re : -1 »  awk comment faire plus court » Le 06/06/2014, à 13:55

Totor
Réponses : 5

sans awk, ni cut... full bash

IFS="/" read -a fu <<< "/home/syst/Ubuntu One/course"
echo "${fu[3]}"

#3 Re : -1 »  Projet d'analyseur de spectre (cherche programmeur Csound et cecilia) » Le 28/10/2012, à 10:55

Totor
Réponses : 11

B et C ressemblent à la fonctionnalité d'étalonnage de mon ampli

#4 Re : -1 »  barre de progression sur notification en root [finalisé] » Le 01/03/2014, à 17:36

Totor
Réponses : 22
gaara92 a écrit :

D'accord, et si quelqu'un trouve une amélioration (notify + barre de progression par exemple), je suis preneur !

je pense que ceci peut répondre à ta demande ...

#5 -1 »  [Freebox Revolution] AirMedia en bash » Le 15/07/2013, à 21:11

Totor
Réponses : 5

Bonjour,

Avec l'arrivé de la mise à jour "Freebox OS", et surtout de son API... J'ai tenté d'écrire un petit script pour envoyer des fichiers multimédia via AirPlay sur la freebox. Chose que l'ont pouvait difficilement faire sous linux hmm

Bref, en fait, il y a 2 scripts.
Le 1er, sert à obtenir un token pour le script qui va faire du AirMedia (à utiliser qu'une seule fois), le 2nd est l'application en elle-même.

1er script:

#!/bin/bash

myHelp()
{
	[ $# -ne 0 ] && echo >&2 -e  "$@"
	myName=${FUNCNAME[$((${#FUNCNAME[@]}-1))]}
	cat >&2 <<EOF
	Usage : 
		${myName} -i app_id -n app_name -v app_version -d device_version
		${myName} -h

	Options:
	-i : ID de l'application
	-n : Nom de l'application
	-v : Version de l'application
	-d : Nom du device autorisé
	-h : Affiche cette aide
EOF
	[ $# -ne 0 ] && return 1
	return 0
}

while getopts :i:n:v:d:h option
do
	case "${option}" in
		h) myHelp
			exit 0;;
		:) myHelp "Argument manquant pour l'option '-${OPTARG}'"
			exit 1;;
		"?") myHelp "Option non valide : ${OPTARG}."
			exit 1;;
		i) app_id="${OPTARG}";;
		n) app_name="${OPTARG}";;	
		v) app_version="${OPTARG}";;	
		d) device_name="${OPTARG}";;	
	esac
done

[[ ${app_id} ]] || { myHelp "ID de l'application manquant !"; exit 1; }
[[ ${app_name} ]] || { myHelp "Nom de l'application manquant !"; exit 1; }
[[ ${app_version} ]] || { myHelp "Version de l'application manquante !"; exit 1; }
[[ ${device_name} ]] || { myHelp "Nom du device manquant !"; exit 1; }

chars=( '|' '/' '-' '\')

# demande d'autorisation de l\'application avec récupération du token :
IFS=$'"' read -a values < <(curl -v http://mafreebox.free.fr/api/v1/login/authorize/ -d '{"app_id":"'${app_id}'", "app_name":"'${app_name}'", "app_version":"'${app_version}'" , "device_name":"'${device_name}'"}' 2>/dev/null)

[[ "${values[@]}" == *success\ :false* ]] && {
	retour=$(printf '%s"' "${values[@]}")
	cat >&2 <<EOF
Erreur lors de la demande d\'autorisation !
Retour de la demande : ${retour%$'"'}
EOF
	exit 2
}

app_token="${values[7]//\\}"
app_token="${app_token//$'\r'}"
app_track="${values[10]//[:\}]}"
app_track="${app_track//$'\r'}"

printf "En attente d'authorisation - à valider sur l'écran du freebox Server :  "
i=0
while reponse=$(curl http://mafreebox.free.fr/api/v1/login/authorize/${app_track} 2>/dev/null) && [[ ${reponse} == *pending* ]]
do
	printf "\b%s" "${chars[i]}"
	sleep 1
	((i++)) && (( i == ${#chars[@]} )) && i=0
done
printf "\b\n"


case ${reponse} in	
	*timeout*)
		echo "Réponse trop tardive (time out) !" >&2; exit 2;;
	*granted*)
		printf "APP_ID=%s\nAPP_TOKEN=%s\nTRACK_ID=%s\n" "${app_id}" "${app_token}" "${app_track}";;
	*denied*)
		echo "Autorisation refusée !" >&2; exit 2;;
	*unknown*)
		echo "Erreur de token !" >&2; exit 2;;
esac
exit

ex : script -i fr.freebox.monAppli -n "Appli AirMedia" -v "1.0.0" -d $(hostname)

2nd Script :

#!/bin/bash

myHelp()
{
	[ $# -ne 0 ] && echo >&2 -e  "$@"
	myName=${FUNCNAME[$((${#FUNCNAME[@]}-1))]}
	cat >&2 <<EOF
	Usage : 
		${myName} -i app_id -t app_token -f fichier
		${myName} -h

	Options:
	-i : ID de l'application
	-t : Token d'authentification
	-f : Fichier audio/vidéo à jouer
	-h : Affiche cette aide
EOF
	[ $# -ne 0 ] && return 1
	return 0
}

while getopts :i:t:f:h option
do
	case "${option}" in
		h) myHelp
			exit 0;;
		:) myHelp "Argument manquant pour l'option '-${OPTARG}'"
			exit 1;;
		"?") myHelp "Option non valide : ${OPTARG}."
			exit 1;;
		i) app_id="${OPTARG}";;
		t) app_token="${OPTARG}";;	
		f) fichier="${OPTARG}";;
	esac
done

[[ ${app_id} ]] || { myHelp "ID de l'application manquant !"; exit 1; }
[[ ${app_token} ]] || { myHelp "Token de l'application manquant !"; exit 1; }
[[ ${fichier} ]] || { myHelp "Nom de fichier audio/vidéo manquant !"; exit 1; }

# demande du challenge :
IFS='"' read -a values < <(curl http://mafreebox.free.fr/api/v1/login/ 2>/dev/null)
[[ "${values[@]}" == *success\ :false* ]] && {
	retour=$(printf '%s"' "${values[@]}")
	cat >&2 <<EOF
Erreur lors de la demande de challenge !
Retour de la demande : ${retour%$'"'}
EOF
	exit 2
}
CHALLENGE="${values[9]//\\}"

# construction du passord
read foo PASSWORD < <(printf "${CHALLENGE}" |openssl dgst -sha1 -hmac ${app_token})

# ouverture de la session
IFS='"' read -a values < <(curl http://mafreebox.free.fr/api/v1/login/session/ -d '{"app_id":"'${app_id}'", "password":"'${PASSWORD}'"}' 2>/dev/null)
[[ "${values[@]}" == *success\ :false* ]] && {
	retour=$(printf '%s"' "${values[@]}")
	cat >&2 <<EOF
Erreur lors de la demande de session !
Retour de la demande : ${retour%$'"'}
EOF
	exit 2
}
SESSION_TOKEN="${values[5]}"

# encodage du nom du fichier
FILE_PATH_ENCODED=$(base64 <(printf "%s" "${fichier}"))

# vérification de la connaissance du fichier
values=$(curl -H "X-Fbx-App-Auth: ${SESSION_TOKEN}" http://mafreebox.free.fr/api/v1/fs/ls/${FILE_PATH_ENCODED} 2>/dev/null)
[[ "${values}" == *success\ :false* ]] && {	
	cat >&2 <<EOF
Fichier inconnu du freebox Server !
Retour de la demande : ${values}
EOF
	exit 2
}

# création d'un partage pour obtention URL
IFS='"' read -a values < <(curl -H "X-Fbx-App-Auth: ${SESSION_TOKEN}" http://mafreebox.free.fr/api/v1/share_link/ -d '{ "path":"'${FILE_PATH_ENCODED}'","expire":"0","fullurl":""}' 2>/dev/null)
[[ "${values[@]}" == *success\ :false* ]] && {
	retour=$(printf '%s"' "${values[@]}")
	cat >&2 <<EOF
Erreur lors de la création du partage !
Retour de la demande : ${retour%$'"'}
EOF
	exit 2
}
FILE_TOKEN="${values[11]//\\}"
FILE_URL="${values[21]}"

values=$(curl -H "X-Fbx-App-Auth: ${SESSION_TOKEN}" http://mafreebox.free.fr/api/v1/airmedia/receivers/Freebox%20Player/ -d '{ "action": "start",   "media_type": "video", "media": "'${FILE_URL}'", "password": "" }' 2>/dev/null)
[[ "${values[@]}" == *success\ :false* ]] && {
	retour=$(printf '%s"' "${values[@]}")
	cat >&2 <<EOF
Erreur lors de la lecture du fichier ${fichier} !
Retour de la demande : ${retour%$'"'}
EOF
	exit 2
}

echo "Envoi de ${fichier} réussi !"
echo "Pour suppression partage : curl -X DELETE -H \"X-Fbx-App-Auth: ${SESSION_TOKEN}\" http://mafreebox.free.fr/api/v1/share_link/${FILE_TOKEN}"

exit

ex : script -i fr.freebox.monAppli -t "<valeur retournée par le 1er script>" -f <fichier reconnu par le freebox server>

Pré-requis :
- curl
- base64

Note : L'API attend une URL "HTTP" comme nom de fichier, c'est pourquoi :
- il faut autoriser l'accès HTTP extérieur au freebox serveur
- ce script créé un partage pour chaque fichier envoyé. une instruction pour supprimer ce partage est retournée mais cette dernière n'est valable que le temps de la session d'authentification. Le partage peut également être supprimé via l'interface d'administration du freebox serveur (Gestion des partages dans le gestionnaire de fichiers)

Le fichier doit être connu du freebox serveur (donc fichier sur le disque dur ou sur un média USB branché et activé)
Ex : /Disque dur/Enregistrements/UneChanson.mp3

A améliorer :
L'API freebox OS ne permet pas à ce jour de vérifier si un média est toujours en court de lecture ou pas... Si un jour cela est réalisable, la suppression du partage sera géré intrinsèquement.

#6 Re : -1 »  [Freebox Revolution] AirMedia en bash » Le 31/08/2013, à 15:14

Totor
Réponses : 5

Pour l'audio, ça "marchotte" chez moi ...
La lecture est cyclique : la piste commence a être lue puis redémarre au début pour une lecture un peu plus longue et ce indéfiniment.
Je pense que cela vient de l'API qui n'est pas encore au point.
En effet, elle ne semble pas prendre en compte l'audio car la doc ne mentionne que des médias de type photo et vidéo.

Sinon, j'avais fait évolué le script depuis, pour prendre en compte la version de l'API et pour ajouter un nouveau paramètre afin de choisir le player sur lequel on souhaite envoyer le média (à défaut, il s'agit du Freebox player) :

#!/bin/bash
# url api : http://dev.freebox.fr/sdk/os/airmedia/
v_api="1"

myHelp()
{
	[ $# -ne 0 ] && echo >&2 -e  "$@"
	myName=${FUNCNAME[$((${#FUNCNAME[@]}-1))]}
	cat >&2 <<EOF
	Usage : 
		${myName} -i app_id -t app_token -f fichier [ -p player ]
		${myName} -h

	Options:
	-i : ID de l'application
	-t : Token d'authentification
	-f : Fichier audio/vidéo à jouer
	-p : Player sur lequel doit être envoyé le contenu multimédia
	-h : Affiche cette aide
EOF
	[ $# -ne 0 ] && return 1
	return 0
}

rawurlencode() {
  local string="${1}"
  local strlen=${#string}
  local encoded=""

  for (( pos=0 ; pos<strlen ; pos++ )); do
     c=${string:$pos:1}
     cas e "$c" in
        [-_.~a-zA-Z0-9] ) o="${c}" ;;
        * )               printf -v o '%%%02x' "'$c"
     esac
     encoded+="${o}"
  done
  echo "${encoded}"
}

player="Freebox Player"
while getopts :i:t:f:p:h option
do
	case "${option}" in
		h) myHelp
			exit 0;;
		:) myHelp "Argument manquant pour l'option '-${OPTARG}'"
			exit 1;;
		"?") myHelp "Option non valide : ${OPTARG}."
			exit 1;;
		i) app_id="${OPTARG}";;
		t) app_token="${OPTARG}";;	
		f) fichier="${OPTARG}";;
		p) player="${OPTARG}";;
	esac
done

player="$(rawurlencode "${player}")"
[[ ${app_id} ]] || { myHelp "ID de l'application manquant !"; exit 1; }
[[ ${app_token} ]] || { myHelp "Token de l'application manquant !"; exit 1; }
[[ ${fichier} ]] || { myHelp "Nom de fichier audio/vidéo manquant !"; exit 1; }

# demande du challenge :
IFS='"' read -a values < <(curl http://mafreebox.free.fr/api/v${v_api}/login/ 2>/dev/null)
[[ "${values[@]}" == *success\ :false* ]] && {
	retour=$(printf '%s"' "${values[@]}")
	cat >&2 <<EOF
Erreur lors de la demande de challenge !
Retour de la demande : ${retour%$'"'}
EOF
	exit 2
}
CHALLENGE="${values[9]//\\}"

# construction du passord
read foo PASSWORD < <(printf "${CHALLENGE}" |openssl dgst -sha1 -hmac ${app_token})

# ouverture de la session
IFS='"' read -a values < <(curl http://mafreebox.free.fr/api/v${v_api}/login/session/ -d '{"app_id":"'${app_id}'", "password":"'${PASSWORD}'"}' 2>/dev/null)
[[ "${values[@]}" == *success\ :false* ]] && {
	retour=$(printf '%s"' "${values[@]}")
	cat >&2 <<EOF
Erreur lors de la demande de session !
Retour de la demande : ${retour%$'"'}
EOF
	exit 2
}
SESSION_TOKEN="${values[5]}"

# encodage du nom du fichier
FILE_PATH_ENCODED=$(base64 <(printf "%s" "${fichier}"))

# vérification de la connaissance du fichier
values=$(curl -H "X-Fbx-App-Auth: ${SESSION_TOKEN}" http://mafreebox.free.fr/api/v${v_api}/fs/ls/${FILE_PATH_ENCODED} 2>/dev/null)
[[ "${values}" == *success\ :false* ]] && {	
	cat >&2 <<EOF
Fichier inconnu du freebox Server !
Retour de la demande : ${values}
EOF
	exit 2
}

# création d'un partage pour obtention URL
IFS='"' read -a values < <(curl -H "X-Fbx-App-Auth: ${SESSION_TOKEN}" http://mafreebox.free.fr/api/v${v_api}/share_link/ -d '{ "path":"'${FILE_PATH_ENCODED}'","expire":"0","fullurl":""}' 2>/dev/null)
[[ "${values[@]}" == *success\ :false* ]] && {
	retour=$(printf '%s"' "${values[@]}")
	cat >&2 <<EOF
Erreur lors de la création du partage !
Retour de la demande : ${retour%$'"'}
EOF
	exit 2
}
FILE_TOKEN="${values[11]//\\}"
FILE_URL="${values[21]}"

values=$(curl -H "X-Fbx-App-Auth: ${SESSION_TOKEN}" http://mafreebox.free.fr/api/v${v_api}/airmedia/receivers/${player}/ -d '{ "action": "start",   "media_type": "video", "media": "'${FILE_URL}'", "password": "" }' 2>/dev/null)
[[ "${values[@]}" == *success\ :false* ]] && {
	retour=$(printf '%s"' "${values[@]}")
	cat >&2 <<EOF
Erreur lors de la lecture du fichier ${fichier} !
Retour de la demande : ${retour%$'"'}
EOF
	exit 2
}

echo "Envoi de ${fichier} réussi !"
echo "Pour suppression partage : curl -X DELETE -H \"X-Fbx-App-Auth: ${SESSION_TOKEN}\" http://mafreebox.free.fr/api/v${v_api}/share_link/${FILE_TOKEN}"

exit

#7 Re : -1 »  [Freebox Revolution] AirMedia en bash » Le 08/09/2013, à 18:05

Totor
Réponses : 5

Attention, les informations que tu as sont les capacités du player ...
il ne s'agit en aucun cas de ce que l'API est capable d'envoyer !

#8 Re : -1 »  [Utilitaire Freebox] Script pour télécharger sur votre V6 » Le 12/07/2013, à 21:16

Totor
Réponses : 168

Bonsoir,

Je tente de me faire un outil pour tester une fonctionnalité de la freebox.
J'ai donc écris un script qui me permet de me donner l'app_token et un second pour ouvrir une session et tester la fonctionnalité souhaitée.

J'arrive très bien à obtenir le token de l'app mais je n'arrive pas à obtenir de token de session...
Je bute sur l'erreur "error_code":"invalid_token"

Je ne comprends absolument pas ! J'avais également constaté la protéction du "/" dans la réponse de curl (je m'appuie sur cet outil) et j'ai donc supprimé les "\" ..
Donc, pourriez-vous tester mes scripts et me faire un retour sur vos résultats à l'obtention du token de session ?

Script pour obtenir l'app_token  :

#!/bin/bash

app_id="$1"
app_name="$2"
app_version="$3"
device_name="$4"

# demande d'autorisation de l'application avec récupération du token :
IFS='"' read -a values < <(curl http://mafreebox.free.fr/api/v1/login/authorize/ -d '{"app_id":"'${app_id}'", "app_name":"'${app_name}'", "app_version":"'${app_version}'" , "device_name":"'${device_name}'"}' 2>/dev/null)
app_token="${values[7]//\\}"
app_track="${values[10]//[:\}]}"

echo "En attente d'authorisation..."
while grep -q pending < <(curl http://mafreebox.free.fr/api/v1/login/authorize/${app_track} 2>/dev/null)
do
	printf "."
	sleep 1
done
echo

reponse=$(curl "http://mafreebox.free.fr/api/v1/login/authorize/${app_track}" 2>/dev/null)
case ${reponse} in	
	*timeout*)
		echo "Réponse trop tardive (time out) !";;
	*granted*)
		printf "APP_TOKEN=%s\nTRACK_ID=%s\n" "${app_token}" "${app_track}";;
	*denied*)
		echo "Autorisation refusée !";;
	*unknown*)
		echo "Erreur de token !";;
esac

A utiliser sous la forme :
nomScript <app_id> <app_name> <app_version> <device_name>

Script d'obtention du token de session :

#!/bin/bash

APP_ID="$1"
APP_TOKEN="$2"

# demande du chanllenge :
IFS='"' read -a values < <(curl http://mafreebox.free.fr/api/v1/login/)
CHALLENGE="${values[9]//\\}"

read foo PASSWORD < <(openssl dgst -sha1 -hmac ${APP_TOKEN} <<< ${CHALLENGE})

curl -v http://mafreebox.free.fr/api/v1/login/session/ -d '{"app_id":"'${APP_ID}'", "password":"'${PASSWORD}'"}'

A utiliser sous la forme :
nomScript <app_id> <app_token>

Merci d'avance pour vos tests (et correction ?) !

#9 Re : -1 »  [Utilitaire Freebox] Script pour télécharger sur votre V6 » Le 13/07/2013, à 13:07

Totor
Réponses : 168
Vinky41 a écrit :

Pour ce qui est des \ je les ai tous supprimés grâce à cette commande :

| sed 's/\\\//g'

Ceci ne peut pas fonctionner car l'expression est incomplète.
Je vois cette erreur partout où il est question d'utiliser l'api free os...

Pour répondre à ton interrogation, si, je fais bien le hash :

read foo PASSWORD < <(openssl dgst -sha1 -hmac ${APP_TOKEN} <<< ${CHALLENGE})

#10 Re : -1 »  [Utilitaire Freebox] Script pour télécharger sur votre V6 » Le 13/07/2013, à 13:13

Totor
Réponses : 168

Bon j'ai trouvé ...
Bon sang...  c'est l'utilisation de la forme Here-String qui posait soucis ...
Je l'utiliser pensant qu'elle n'ajoutait pas de retour à la ligne et finalement si, c'est le cas hmm

#11 Re : -1 »  [Utilitaire Freebox] Script pour télécharger sur votre V6 » Le 15/07/2013, à 21:17

Totor
Réponses : 168

@Zakhar : roll:/
Je n'ai pas demandé d'avis sur mon script ni à savoir si il était approprié à ton besoin ou pas.. mais uniquement si il fonctionnait chez vous.

#12 Re : -1 »  [Résolu] Copie de fichiers » Le 28/03/2013, à 22:00

Totor
Réponses : 4

histoire d'intruduire d'autres notions ...

( shopt -s dotglob; file **|awk -r -F: '/^[^.]+:.*JPEG/ { print $1}' )

#13 Re : -1 »  [RESOLU]Comportement étrange de la commande read » Le 27/03/2013, à 14:44

Totor
Réponses : 2

normal, dans ta fonction, l'entrée standard est la même que celle de ta boucle. du coup, le read ans1 lit la ligne suivante du fichier $1

bref, il faut que tu repenses ton script et que tu passes par un fd alternatif pour ta boucle.
nesthib, pingouinux ou autre prendront certainement le temps de corriger tout cela si tu as besoin (ce que je pense au vu de ton script)...

#14 Re : -1 »  [Résolu] choix pour des recherches dans des fichiers » Le 13/03/2013, à 21:23

Totor
Réponses : 32
tiramiseb a écrit :
credenhill a écrit :
var=EneP; awk -F";" -v var=$var 'BEGIN{IGNORECASE=1} $1 ~ var {print}' dico.txti

C'est un peu plus compliqué que

grep "^$var;" dico.txt

big_smile

Awk est tout aussi puissant (voire plus) que grep pour la recherche de pattern/regex. En outre, je rejoins largement credenhill sur son utilisation car il est doté d'un langage lui permettant de réaliser des traitements sur des flux évitant de multiples utilisations de grep (ou sed) à l'interieur des divers mechanismes de boucles fournis par le shell employé.
Dès lors que l'on a compris son fonctionnement, cela permet une plus grande souplesse dans les traitements de flux.

#15 Re : -1 »  [resolu] Option mv pour deplace des sous dossier d'un sous dossier » Le 12/03/2013, à 20:06

Totor
Réponses : 11
Hizoka a écrit :

[...]
mais pas avec ce que moi je donnais.

Et si on peut wink

$ mkdir -p /tmp/forum/test/test{A,B/{C,D},E,F/{G,H}}
$ cd /tmp/forum
$ shopt -s globstar
$ printf "%s\n" **/
test/
test/testA/
test/testB/
test/testB/C/
test/testB/D/
test/testE/
test/testF/
test/testF/G/
test/testF/H/

mais bon, je le déconseille pour le mv car il se peut qu'il déplace un dossier parent puis tente de déplacer un enfant.
ex : testF puis G ... or le G a déjà été déplacé et n'existe plus de part le mv de testF

#16 Re : -1 »  [Script]Comment comparer le debut d'une chaine ? » Le 04/01/2013, à 15:57

Totor
Réponses : 6

Salut,

pingouinux a écrit :

[...]

	if [ $fichier == "$PREFIX*" ]

par celle-ci

	if [ "${fichier::8}" == "$PREFIX" ]

ou même mieux, par celle-là

      if grep -q "^$PREFIX" <<<"$fichier"

[...]

Mouais, j'aurai plutôt fait comme ceci :

if [[ "${fichier}" == "${PREFIX}"* ]]

Ainsi, cela évite :
- d'utiliser les regex et un process supplémentaire
- d'oublier de changer la valeur 8 si la longueur du préfixe venait à changer.

mais bon, ce n'est que chipoter wink

#17 Re : -1 »  [Résolu] Awk, extraction d'un groupe de lignes suivant le résultat » Le 04/12/2012, à 19:57

Totor
Réponses : 10

bonsoir,
une autre approche :

awk -v RS=">" -v ORS="" '/transcript_biotype:rRNA/ {print ">"$0}' test.txt

#18 Re : -1 »  Nohup ne fonctionne pas... » Le 22/11/2012, à 08:59

Totor
Réponses : 9

Rien d'anormal à ce que cela ne fonctionne pas ...
Seule la partie cd /games/ est appliquée dans le contexte du nohup...

+1 pour Postmortem, sinon une altérnative : utiliser screen

#19 Re : -1 »  [Résolu]Passer d'une ligne de commande à un fichier .sh » Le 14/11/2012, à 19:21

Totor
Réponses : 11
PengouinPdt a écrit :

Pas obligé certes, mais c'est la manière propre, voire sûre de récupérer l'information système ...

Les 2 solutions sont exactements équivalentes. Et ta solution ne récupère pas plus d'information système.
Les 2 seuls intérêt à exploiter $? sont :
- de confronter le statut de la commande à plusieurs valeurs (ce qu'indique pingouinux)
- conservation / pérennisation / sauvegarde / stockage de la valeur du statut retourné en vu de son exploitation par la suite par le même ou par tout autre traitement

Ce qui ne semble absolument pas être le cas dans le contexte présent....

#20 Re : -1 »  [résolu]Remplacement dans une chaine (SLASH) » Le 20/11/2012, à 10:51

Totor
Réponses : 6
nesthib a écrit :

@tiramiseb : pourquoi [..]que le premier wink

+1

#21 Re : -1 »  Sed et Awk, extraction d'une suite de numéros » Le 14/11/2012, à 19:25

Totor
Réponses : 6
nesthib a écrit :

une variante :

awk -F '[[@="&]' '{print $2"\n"$7}'

plus précisément :

awk -F '[[@="&]' '{print $2 >> fichierX ;  print $7 >> fichierY}' asterisk.out

#22 Re : -1 »  [Résolu] Remplacement dans un fichier sans fichier temporaire » Le 05/10/2012, à 14:34

Totor
Réponses : 20

le fopen chargera le fichier en mémoire et comme il est peut probable que tu aies 4Go de mémoire libre, le système utilisera un fichier temporaire ....

#23 Re : -1 »  utilisation SCP » Le 01/10/2012, à 16:25

Totor
Réponses : 8

ceci devrait faire 10 copies simultanément....

xargs -i -0 -P 10 -- scp  -p -P 6667 {}  xxx@xxx.com:/volume1/ < <(printf "%s\0" REP/*)

#24 Re : -1 »  BASH comptage des lignes de code (spécial Geek) » Le 01/10/2012, à 10:59

Totor
Réponses : 11
sputnick a écrit :

C'est pas fini : un problème interessant se pose.

Salut !

Sans compter que cette solution est "fourre tout" ... elle recense les commentaires, lignes vides et très probablement du code mort...