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

#0 Re : -1 »  Le fort fort ancien et fort fort vénérable ordre du TdCT, LXVe édition » Le 17/08/2014, à 19:46

nesthib
Réponses : 2570
Ras' a écrit :

Si vous avez besoin d'aide n'hésitez pas je ferai un tuto.

Ça marche pas. Tu veux bien faire un tuto ?

#7 Re : -1 »  [Résolu] Executer un script local avec ssh » Le 28/08/2014, à 06:09

nesthib
Réponses : 11

Peux-tu expliquer ce que tu cherches à faire (pourquoi vouloir afficher un texte sur un terminal distant ?)

Il est possible d'envoyer du texte ou le retour d'une commande sur un terminal (ou plutôt pseudo-terminal) donné. La première chose est de déterminer l'identifiant du terminal disant avec la commande who.
Tu verras des lignes du genre :

utilisateur   pts/0        2014-08-28 00:00 (hôte connecté)

Ici, l'identifiant est pts/0

Tu peux ensuite envoyer du texte arbitraire en faisant :

ssh utilisateur@hôte_distant 'echo "bonjour" >/dev/pts/0'

Tu peux également envoyer des commande (ou le contenu d'un script) et les faire exécuter par n'importe quel programme distant :

echo 'echo $(whoami) a lancé une commande le $(date)' | ssh utilisateur@hôte_distant 'bash >/dev/pts/0'
echo 'print((1+4)/2)' | ssh utilisateur@hôte_distant "python >/dev/pts/0"
cat script.sh | ssh utilisateur@hôte_distant "bash >/dev/pts/0"

Attention, envoyer comme ça du texte arbitraire vers un terminal risque d'interférer avec l'affichage si le terminal est utilisé pour d'autres commandes (tout sera mélangé). Note également que tu ne peux accéder au terminal que si tu as les droits de l'utilisateur qui le possède.

#8 Re : -1 »  [Résolu] Executer un script local avec ssh » Le 28/08/2014, à 13:20

nesthib
Réponses : 11

Aucune idée, c'est censé faire quoi ton application ? En tout cas je pense que c'est une mauvaise pratique d'écrire comme ça sur le terminal sans passer par le shell qu'il contient.

En ce qui concerne screen, ça fonctionne bien pour partager une session, mais c'est une autre approche (que je valide, c'est vraiment très pratique !).

#9 Re : -1 »  [Résolu] Executer un script local avec ssh » Le 28/08/2014, à 22:45

nesthib
Réponses : 11

Ta BDD elle est accessible par le réseau ? (Quel SGBD utilises-tu ?)
Le plus simple serait peut être de faire un tunnel ssh entre les deux machines… Sinon, selon le type de BDD tu peux aussi monter localement la partie du système de fichier distant qui t'intéresse.

Quoi qu'il en soit, l'exécution de commandes à distance est une chose, mais je ne vois pas l'intérêt de déporter l'affichage sur le terminal distant…

#11 Re : -1 »  [Python] Numéro atomique d'un élément à partir de son nom » Le 27/08/2014, à 08:22

nesthib
Réponses : 17

@melixgaro : ne fais jamais de try/except sans spécifier l'erreur attendue. Dans ton cas tu peux avoir une KeyError, donc spécifie-le, ceci t'évitera des bugs silencieux.

Une petite suggestion, utilise une base de données sqlite :

import sqlite3

# cette partie n'est à exécuter qu'une seule fois pour créer la base de données
elements = [(1, 'Hydrogen', 'H'), (2, 'Helium', 'He'), (3, 'Lithium', 'Li')]

db = sqlite3.connect('/tmp/periodic.db')
c = db2.cursor()

c.execute('CREATE TABLE elements (Id INT, Name TEXT, Symbol TEXT)')
c.executemany('INSERT INTO elements VALUES(?, ?, ?)', elements)
db.commit()
db.close()

# Cette fonction permet de chercher dans la base par nom ou par symbole
def get_elem(text):
    db = sqlite3.connect('periodic.db')
    with db:
        c = db.cursor()
        n = c.execute('SELECT Id from elements WHERE (Symbol is ? OR Name is ?)', (text,)*2).fetchone()
        return n[0] if n else None

La fonction s'utilise de la façon suivante :

>>> get_elem('H')
1
>>> get_elem('Helium')
2
>>> get_elem('Water')
>>>

La base de données te permettra d'ajouter des informations supplémentaires pour chaque élément (dans la table elements ou dans une table séparée) wink

#12 Re : -1 »  [Python] Numéro atomique d'un élément à partir de son nom » Le 27/08/2014, à 16:17

nesthib
Réponses : 17

@tiramiseb : je n'ai pas dit que je re-coderais si c'était pour mon usage, mais je te rappelle que chacun fait ce qu'il veut, je propose une solution qu'il peut mettre en œuvre pour apprendre wink

#13 Re : -1 »  UEFI, SecureBoot et Ubuntu » Le 26/08/2014, à 16:18

nesthib
Réponses : 31

HS supprimé, merci de relire les règles du forum.

#14 Re : -1 »  [RÉSOLU] Commander vim de l'extérieur » Le 24/08/2014, à 22:23

nesthib
Réponses : 3

Tu peux lancer :

vim '+:version'
vim '+:version' '+:q'

#15 Re : -1 »  Incron et téléchargement auto » Le 21/08/2014, à 07:23

nesthib
Réponses : 5

Lance inotifywait sur ton dossier cible et regarde les événements dans les deux configurations. Tu verras si tu as utilisé la bonne configuration :

inotifywait -m /dossier_cible

Pourquoi ne pas directement télécharger le fichier sur le disque cible ?

#16 Re : -1 »  Incron et téléchargement auto » Le 22/08/2014, à 02:59

nesthib
Réponses : 5

inotify-wait (que tu dois en effet installer) te permettra de voir quels sont les appels système réalisés par ton logiciel (ici rtorrent). Effectivement, si tu utilises « IN_CLOSE_WRITE » alors que l'appel effectué est « IN_CLOSE_NOWRITE », ça ne fonctionnera pas wink

#17 Re : -1 »  aide python telecharger fichier dont le nom est partielement connu » Le 22/08/2014, à 04:45

nesthib
Réponses : 7

Il manque une information primordiale dans ta question. Comment détermines-tu le nom de fichier exact ? Y a-t-il une page web ? Un partage FTP ? Selon le cas la réponse peut varier.
Une autre chose pour ta version avancée, comment sais-tu que tu as déjà téléchargé un fichier puisque tu le renommes ? Veux-tu aussi vérifier l'intégrité du fichier (ex. somme de contrôle) ?

Une solution pour le cas où tu connais l'URL :

#!/usr/bin/python

import os
import urllib

LAST_EXEC_FILE = '/tmp/last_exec'
DEST_FOLDER = '/tmp'

URL = 'http://lien.vers/le/fichier.exe'    # à remplacer par une fonction qui détermine l'URL
exec_name = URL.rsplit('/', 1)[1]    # on récupère le nom de l'exécutable

# fonction pour comparer avec le nom du dernier fichier téléchargé (dans LAST_EXEC_FILE)
def is_last(name):
    with open(LAST_EXEC_FILE) as f:
        last = f.read().rstrip()
    return name == last

# s'il n'y a pas de fichier LAST_EXEC_FILE ou que le dernier fichier téléchargé n'est pas le plus récent, on lance le téléchargement
if not (os.path.exists(LAST_EXEC_FILE) and is_last(exec_name)):
    urllib.urlretrieve (URL, os.path.join(DEST_FOLDER, '1_7_64.exe'))
    # on garde en mémoire le nom d'origine du dernier fichier téléchargé
    with open(LAST_EXEC_FILE, 'w') as f:
        f.write(exec_name)

C'est vraiment tout simple, même pas une version 1 ou 1.1, plutôt 0.01 wink

Si tu veux comprendre en détail ce code, installe ipython et lance le code ligne par ligne (ou bloc par bloc) et essaie de décomposer les différents éléments.

#18 Re : -1 »  aide python telecharger fichier dont le nom est partielement connu » Le 24/08/2014, à 03:08

nesthib
Réponses : 7

Tu peux facilement extraire l'url de la page web avec le code suivant :

import re
import urllib
from bs4 import BeautifulSoup

# on récupère la page
page = urllib.urlopen('http://www.symantec.com/security_response/definitions/download/detail.jsp?gid=sep').read()
# on analyse le HTML avec BeautifulSoup et le parseur lxml (car la page est mal formatée…)
soup = BeautifulSoup(page, 'lxml')
# on récupère le premier lien qui corresponde à 00000000*v5i64.exe
url = soup.find(lambda tag: tag.name=='a' and 'href' in tag.attrs and re.match('http://.*\d{8}[^/]+v5i64.exe', tag.attrs['href']))['href']

Tu dois installer les paquets python-bs4 et python-lxml.

Une version plus simple (et qui ne requiert ni BeautifulSoup ni lxml) mais moins propre (ne se base pas sur les balises HTML) :

import re
import urllib
# on récupère la page
page = urllib.urlopen('http://www.symantec.com/security_response/definitions/download/detail.jsp?gid=sep').read()
# on cherche l'url
url = re.findall('(?<=href=")http://definitions.symantec.com/defs/\d{8}[^"/]+v5i64.exe(?=")', page)[0]

#19 Re : -1 »  Script windows pour rentrer sur un réseau intranet » Le 21/08/2014, à 07:59

nesthib
Réponses : 5

Si tu utilisais Mac OSX, ils te proposeraient quoi comme solution ? L'architecture du système étant similaire ça aiderait peut être dans la résolution de ton problème.
Sais-tu de quel type d'authentification il s'agit ? Peut être d'active directory ?
Essaie ces pages de documentation (lis bien avant de te lancer, ça n'est peut être pas ce sont tu as besoin) :
https://doc.ubuntu-fr.org/tutoriel/comm … _directory
https://doc.ubuntu-fr.org/tutoriel/comm … e_nt_samba

#20 Re : -1 »  Différent Terminal » Le 21/08/2014, à 07:32

nesthib
Réponses : 9

Tu peux lire les liens suivants :
https://doc.ubuntu-fr.org/shell
https://doc.ubuntu-fr.org/commande_shell
https://doc.ubuntu-fr.org/tutoriel/cons … es_de_base
https://doc.ubuntu-fr.org/tutoriel/cons … e_commande

les informations sont un peu redondantes, mais tu y trouveras des informations de base sur l'utilisation du terminal/shell.

#21 Re : -1 »  Shell Tri bizarre » Le 18/08/2014, à 06:59

nesthib
Réponses : 2

Peut être un soucis de locale ? Essaie de la façon suivante :

LANG=C sort /tmp/tmppo

Tu peux aussi spécifier la colonne à utiliser comme clé pour le tri :

sort -k2,2 /tmp/tmppo

#22 Re : -1 »  [réglé]apache2 permissions sur dossier /var/www/ » Le 16/08/2014, à 17:54

nesthib
Réponses : 14

Rien d'anormal, peut être que tu as fait une faute de frappe…
Essaie de lancer la commande avec « /bin/chown » comme je te l'indiquais. En donnant le chemin complet tu vas éviter les problèmes d'alias ou de fonction qui pourraient outrepasser le fonctionnement normal de chown.

#23 Re : -1 »  [Résolu] Bash: sed n'interpréter que certaines parties du fichier » Le 16/08/2014, à 18:12

nesthib
Réponses : 10

Je vois exactement le type de besoins. J'ai déjà eu à faire des choses similaires sur des documents de plusieurs centaines de pages. Ex. changer les niveaux de titre (incrémenter, décrémenter) dans un document LaTeX, mettre à jour des citations, etc. Bien que j'aie utilisé des scripts bash (+ sed/awk/grep/…), j'utiliserais python sans hésitation si c'était à refaire.

Pour tous les documents qui utilisent des balises, l'idéal est de travailler avec un parseur, un programme qui va « comprendre » la grammaire du langage (ex. LaTeX, html) et te permettre d'y apporter des modifications. C'est la meilleure solution théorique, mais en pratique ça peut être compliqué à mettre en œuvre. Une astuce qui fonctionne dans la plupart des cas est de détecter les balises avec une expression rationnelle. Par exemple :

Détecter une balise « \textit[…] » en LaTeX pour changer le contenu (et, par exemple, le mettre en majuscule). L'expression rationnelle (python) serait :

'\\textit\[([^][]+)\]'

se qui se traduit par → détecter une séquence qui commence par « \textit[ » (on échappe le \ avec un double \\ et le [ avec \[), suivi d'une suite de caractères d'au moins 1 caractère (+) qui soit n'importe quoi, sauf des crochets « [^][] », (la syntaxe pour n'importe quelle voyelle serait par exemple [aeiouy], et pour tout sauf des voyelles : [^aeiouy], donc ici tout sauf des crochets « ][ »). Enfin on demande que la chaîne soit suivie d'un ] (\]) et que la partie conservée soit seulement ce qui est entre les […] (pour cela on utilise les parenthèses).

Avec cette astuce tu peux travailler avec la plupart des langages balisés pour y faire des substitutions simples. Attention cependant, si tu dois faire des tâches plus avancées, ou que tu as des balises imbriquées tu devras alors utiliser un parseur.

Bon courage et n'hésite pas à ouvrir de nouveaux fils de disussion wink

#24 Re : -1 »  [Résolu] Bash: sed n'interpréter que certaines parties du fichier » Le 16/08/2014, à 18:36

nesthib
Réponses : 10

Oui pardon, enfin ça ne change pas grand chose au problème, il suffit de remplacer « \[ » par « { » wink