Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1376 Le 14/06/2013, à 20:55

ljere

Re : /* Topic des codeurs [8] */

je viens de retester ça fonctionne par contre je ne comprend pas j'ai la même chose pour le log et la variable file

fichier.write("[code]"+lsb.read()+lsu+lsp+"[/code]")
file = ("[code]"+lsb.read()+lsu+lsp+"[/code]")

pourtant le lsb.read() n'est pas pris en compte dans la variable alors que dans le log le fichier est bien complet

ps: je crois que c'est du à l'interdiction au membre d'écrire en majuscule je vais demander

Dernière modification par ljere (Le 14/06/2013, à 21:00)


ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon

Hors ligne

#1377 Le 14/06/2013, à 20:55

grim7reaper

Re : /* Topic des codeurs [8] */

Raaah putain le con, j’ai compris pourquoi je n’y arrivais pas…
Je me connectai sur ubuntu-fr, mais je voulais poster avec une url en kubuntu-fr.
Boulet >_<'

Hors ligne

#1378 Le 14/06/2013, à 21:02

ljere

Re : /* Topic des codeurs [8] */

ah oui donc à prendre en compte lors du choix de l'utilisateur


ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon

Hors ligne

#1379 Le 14/06/2013, à 21:05

grim7reaper

Re : /* Topic des codeurs [8] */

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.10
DISTRIB_CODENAME=quantal
DISTRIB_DESCRIPTION="Ubuntu 12.10"

Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 058f:a014 Alcor Micro Corp. Asus Integrated Webcam
Bus 001 Device 004: ID 0bda:0139 Realtek Semiconductor Corp. Card reader
Bus 002 Device 003: ID 046d:c52f Logitech, Inc. Wireless Mouse M305

03:00.0 Network controller [0280]: Intel Corporation Centrino Wireless-N 100 [8086:08ae]
	Subsystem: Intel Corporation Centrino Wireless-N 100 BGN [8086:1005]
	Kernel driver in use: iwlwifi
	Kernel modules: iwlwifi
04:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller [10ec:8168] (rev 06)
	Subsystem: ASUSTeK Computer Inc. Device [1043:1277]
	Kernel driver in use: r8169
	Kernel modules: r8169

Hors ligne

#1380 Le 14/06/2013, à 21:08

grim7reaper

Re : /* Topic des codeurs [8] */

ljere a écrit :

ps: je crois que c'est du à l'interdiction au membre d'écrire en majuscule je vais demander

Non ce n’est pas ça.
Regarde mon post précédent, ça fonctionne.
Ceci

./wificheck.py
login: grim7reaper
password: XXX
topic: http://forum.kubuntu-fr.org/viewtopic.php?id=1107651&p=56

à produit le message précédent.

Ton problème vient du fait que tu appelles read deux fois.
Tu écris le fichier de log, tu appelles read qui va lire jusqu’a la fin du fichier puis te renvoyer le contenu.
Tout va bien.
Ensuite, tu veux poster et tu appelles read encore mais le problème c’est que tu es déjà à la fin du fichier (avec le read précédent), du coup read ne renvoie rien.
Deux solutions :
- tu rembobines le fichier, via seek, entre les deux appels (un peu crade)
- tu appelles read une seule et unique fois et tu sauves le contenue dans une variable, puis tu utilises cette variable.

Dernière modification par grim7reaper (Le 14/06/2013, à 21:11)

Hors ligne

#1381 Le 14/06/2013, à 21:33

saeba-ryo

Re : /* Topic des codeurs [8] */

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=13.04
DISTRIB_CODENAME=raring
DISTRIB_DESCRIPTION="Ubuntu 13.04"
Bus 002 Device 002: ID 04f2:b1d6 Chicony Electronics Co., Ltd 
Bus 004 Device 002: ID 046d:c062 Logitech, Inc. LS1 Laser Mouse, corded
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
03:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. RTL8188CE 802.11b/g/n WiFi Adapter [10ec:8176] (rev 01)
	Subsystem: Realtek Semiconductor Co., Ltd. Device [10ec:8181]
	Kernel driver in use: rtl8192ce
04:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller [10ec:8136] (rev 05)
	Subsystem: Toshiba America Info Systems Device [1179:fd7b]
	Kernel driver in use: r8169

Nicky Larson

Hors ligne

#1382 Le 15/06/2013, à 13:19

ljere

Re : /* Topic des codeurs [8] */

j'ai inclus entièrement wificheck j'ai ajouté un contrôle pour le lancement en root
je pense que je suis bien parti la

#!/usr/bin/python3
# coding: utf-8
# ========================================================================================
#
# Script de ljere
# license GPL V3 or later
#
# Description : script permettant de constituer un fichier log qui regroupe les diverses 
# informations pouvant être nécessaire à la résolution des problèmes de wifi, le log sera 
# placé dans votre home/user/ ainsi qu'envoyé directement sur le forum ubuntu-fr.org pour 
# cela il est nécessaire d'avoir ouvert une discussion et d'en récupérer l'adresse, 
# votre login, votre mot de passe et de lancer ce script en root.
#
# ========================================================================================
# -----------------------------------------------
# Ajout de bibliothèques utiles
# -----------------------------------------------
from subprocess import check_output
import os
import requests
import sys

if not os.geteuid()==0:
    sys.exit("\nCe script nécessite les droits root, lancez avec: sudo python3 " +sys.argv[0]+ " \n")


#identification sur le forum
payload = { 'req_username' : 'saeba-ryo',
            'req_password' : 'mot de passe',
            'redirect_url' : '[url]http://forum.ubuntu-fr.org/[/url]',
            'form_sent'    : '1' }
r = requests.post('http://forum.ubuntu-fr.org/login.php?action=in', payload)
cookies = (r.cookies)

def gather_info():
    """Retrieve information about WiFi."""
    info = []
    # /etc/lsb-release
    with open('/etc/lsb-release', encoding='ascii') as fp:
        info.append('[code]' + 'lsb-release:' + '\n' + fp.read())
    # uname -r -m
    info.append('uname -r -m:' + '\n' + check_output([str('uname'), '-r', '-m']).decode('ascii'))
    # lsusb
    info.append('lsusb:' + '\n' + check_output('lsusb').decode('ascii'))
    # lspci -k -nn | grep -A 3 -i net
    info.append('lspci -k -nn | grep -A 3 -i net:' + '\n' + check_output('lspci -k -nn | grep -A 3 -i net', shell=True).decode('ascii'))
    # lsmod
    info.append('lsusb:' + '\n' + check_output('lsmod').decode('ascii') + '[/code]')
    # /etc/network/interfaces
    with open('/etc/network/interfaces', encoding='ascii') as fp:
        info.append('[code]' + '/etc/network/interfaces:' + '\n' + fp.read())
    # iwconfig
    info.append('iwconfig:' + '\n' + check_output('iwconfig').decode('ascii'))
    # ifconfig -a
    info.append('ifconfig -a:' + '\n' + check_output([str('ifconfig'), '-a']).decode('utf-8'))
    # nm-tool
    info.append('nm-tool:' + '\n' + check_output('nm-tool').decode('ascii') + '[/code]')
    # sudo iwlist scan
    info.append('[code]' + 'sudo iwlist scan:' + '\n' + check_output([str('sudo'), 'iwlist', 'scan']).decode('ascii'))
    # sudo lshw -C network
    info.append('sudo lshw -C network:' + '\n' + check_output([str('sudo'), 'lshw', '-c', 'network']).decode('utf-8'))
    # sudo rfkill list
    info.append('sudo rfkill list:' + '\n' + check_output([str('sudo'), 'rfkill', 'list']).decode('ascii') + '[/code]')
    return '\n'.join(info)

wifi = gather_info()

#création du fichier log
with open(os.path.expanduser('~/wifi.log'), mode='w', encoding='utf-8') as fichier:
    fichier.write(wifi)

#envoi du contenu du log sur le forum

message = { 'req_message' : wifi,
            'form_sent'   : '1' }
requests.post('http://forum.ubuntu-fr.org/post.php?tid=1107651&p=56?action=in',  message, cookies=cookies)

Dernière modification par ljere (Le 15/06/2013, à 17:40)


ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon

Hors ligne

#1383 Le 15/06/2013, à 13:47

grim7reaper

Re : /* Topic des codeurs [8] */

lsb et net ouvrent des fichiers que tu ne fermes jamais.
Je ferais plutôt :

with open('/etc/lsb-release', encoding='ascii') as fp:
    lsb = fp.read()
with open('/etc/network/interfaces', encoding='ascii') as fp:
    net = fp.read()

Sinon, de manière générale, mon approche aurai plutôt été d’avoir une liste d’info puis j’aurais fait un join final avant d’ajouter les balises code.
Genre une fonction comme ça :

def gather_info():
    """Retrieve information about WiFi."""
    info = []
    # cat /etc/lsb-release
    with open('/etc/lsb-release', encoding='ascii') as fp:
        info.append(fp.read())
    # lsusb
    info.append(check_output('lsusb').decode('ascii'))
    # lspci -k -nn | grep -A 3 -i net
    info.append(check_output('lspci -k -nn | grep -A 3 -i net',
                             shell=True).decode('ascii'))
    return '\n'.join(info)

Puis un appel comme ça quelque part dans le code :

wifi_info = '[code]' + gather_info() + '[/code]'

Dernière modification par grim7reaper (Le 15/06/2013, à 13:54)

Hors ligne

#1384 Le 15/06/2013, à 14:52

ljere

Re : /* Topic des codeurs [8] */

aussitôt dit aussitôt fait
c'est vrai que c'est tout de suite plus aéré


ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon

Hors ligne

#1385 Le 15/06/2013, à 15:18

grim7reaper

Re : /* Topic des codeurs [8] */

Pourquoi tu fais trois fonctions distinctes ?

Hors ligne

#1386 Le 15/06/2013, à 15:54

ljere

Re : /* Topic des codeurs [8] */

pour garder l'architecture des 3 balises ça reste plus lisible pour ceux qui lisent les infos


ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon

Hors ligne

#1387 Le 15/06/2013, à 16:01

grim7reaper

Re : /* Topic des codeurs [8] */

Des trois balises ?
Si je regarde bien ton code, tout est dans une seule balise, non ?

wifi = ('[code]' + gather_info1() + gather_info2() + gather_info3() + '[/code]')

Au passage, les parenthèses englobantes sont inutiles.

Hors ligne

#1388 Le 15/06/2013, à 16:12

ljere

Re : /* Topic des codeurs [8] */

j'ai corrigé mes stupidités

Dernière modification par ljere (Le 15/06/2013, à 16:21)


ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon

Hors ligne

#1389 Le 15/06/2013, à 16:37

Jules Petibidon

Re : /* Topic des codeurs [8] */

Suggestion :
Ce serait pas plus lisible que la trace de chaque commande soit dans son propre bloc code (avec le nom de la commande en preambule par ex)

Autre suggestion :
Si ce script doit être utilisé pour diagnostiquer des problèmes d'utilisateurs, est il judicieux d'obliger cet utilisateur à installer une lib python externe ?

Hors ligne

#1390 Le 15/06/2013, à 16:56

nesthib

Re : /* Topic des codeurs [8] */

Je rejoins les deux remarques de Jules Petibidon.

Pour la première, au lieu de collecter tes informations dans une liste, tu pourrais soit les collecter dans un dictionnaire, soit collecter dans ta liste des tuples avec en premier paramètre le nom de la commande lancée. Quand tu as fini de tout collecter, tu génères ton message avec en entête de chaque bloc le nom de la commander et ensuite le bloc code.


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#1391 Le 15/06/2013, à 16:57

ljere

Re : /* Topic des codeurs [8] */

on en avait déjà discuté dans la discussion originale 1 bloc par commande ne ferait qu'encombrer la page ajouter le nom de la commande par contre c'est faisable


ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon

Hors ligne

#1392 Le 15/06/2013, à 17:08

nesthib

Re : /* Topic des codeurs [8] */

Shanx a écrit :

Ça ressemble à une requête de type GET. Et honnêtement, ça m’étonnerait que le forum utilise ça, vu que le mot de passe circule en clair sur le réseau.
Je ne sais pas du tout si ça fonctionne pour les sites internet, mais une identification utilisant un truc du genre EAP ou CHAP me semble plus plausible.

Πυλάδης a écrit :

À ton avis, pourquoi nesthib recommande-t-il aux modos de se connecter en HTTPS ?

Shanx a écrit :

Sérieux ? Oo’

L'authentification est faite en POST, et le mot de passe circule donc en clair pour ceux qui n'utilisent pas https…

ljere a écrit :

on en avait déjà discuté dans la discussion originale 1 bloc par commande ne ferait qu'encombrer la page ajouter le nom de la commande par contre c'est faisable

Pour celui qui veut aider, c'est AMHA beaucoup plus facile à lire si tu as plusieurs blocs, que d'avoir à chercher dans un seul bloc parmi le retour de 10 commandes.

Dernière modification par nesthib (Le 15/06/2013, à 17:16)


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#1393 Le 15/06/2013, à 17:48

ljere

Re : /* Topic des codeurs [8] */

j'ai rectifié le script pour inclure la commande qui est lancé, sinon comme je l'ai dit il y a 3 blocs, mais si vous voulez vraiment 1 bloc par commande ça ne me dérange pas


ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon

Hors ligne

#1394 Le 15/06/2013, à 18:10

Jules Petibidon

Re : /* Topic des codeurs [8] */

Non, c'est vrai que scinder les blocs de code, vu la quantité, ça ferait des posts à rallonge.
Par contre quelques sauts de lignes et des titres de section dans le bloc de code, ce serait peut-être pas du luxe.

Sinon pour éviter la dépendance à requests, ceci fait le minimum mais doit permettre de répondre au besoin :

import urllib.parse, urllib.request
import http.cookiejar

class HTTPOpener(object):
    def __init__(self):
        self._opener = urllib.request.build_opener(
                urllib.request.HTTPCookieProcessor(
                    http.cookiejar.CookieJar()
                    )
                )

    def open(self, url, post_data=None):
        if post_data:
            pdata = urllib.parse.urlencode(post_data).encode('utf8')
        else:
            pdata = None

        request = urllib.request.Request(url, pdata)
        result = self._opener.open(request)
        return result

opener = HTTPOpener()

opener.open('http://example.com', {'eggs': 'foo', 'spam': 'bar'})

Hors ligne

#1395 Le 15/06/2013, à 20:20

Rolinh

Re : /* Topic des codeurs [8] */

Question aux pythonneux:

Quelle est la bonne pratique, pour un projet python, pour gérer les lib et l'environnement ?
Étant plutôt habitué au monde Ruby, j'ai cherché une sorte d'équivalent à bundler mais je ne sais pas si c'est la bonne façon de faire. Du coup, en python ça donnerait un truc genre pip + virtualenv + requirements file. Quelqu'un peut confirmer que c'est OK ou m'indiquer le chemin à prendre sinon?

EDIT: pour être plus clair, je pense à quelque chose du genre:

virtualenv --no-site-packages .
source bin/activate
pip install -r requirements.txt

Avec donc la liste des libs nécessaires dans le fichier requirements.txt.

Dernière modification par Rolinh (Le 15/06/2013, à 20:36)

Hors ligne

#1396 Le 15/06/2013, à 20:48

ljere

Re : /* Topic des codeurs [8] */

merci Jules Petibidon je suis actuellement entrain d'essayer d'inclure tkinter pour que l'utilisateur puisse saisir les infos utile à la connexion,
je testerai donc avec plaisir le bout de code que tu m'as fourni


ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon

Hors ligne

#1397 Le 16/06/2013, à 09:54

Jules Petibidon

Re : /* Topic des codeurs [8] */

@rolinh
Dans un monde idéal, cette méthode est bonne. Hélas ça dépend un peu des libs que tu as à installer. Par exemple une fois j'ai eu la géniale idée d'installer pyside via pip... Et j'ai beaucoup pleuré smile

Je connais pas la solution idéale à ce problème.

Hors ligne

#1398 Le 16/06/2013, à 11:35

Rolinh

Re : /* Topic des codeurs [8] */

@Jules Petibidon
Ok, merci smile

Bon, j'ai besoin de collecter des tweets pour un petit projet de data mining. Du coup, hop direction l'API REST de Twitter et...

{"errors":[{"message":"Bad Authentication data","code":215}]}

Sérieusement? Il faut s'authentifier pour récupérer des informations publiques?

Hors ligne

#1399 Le 16/06/2013, à 12:34

grim7reaper

Re : /* Topic des codeurs [8] */

Rolinh a écrit :

Sérieusement? Il faut s'authentifier pour récupérer des informations publiques?

Ho que oui. C’est pas récent, ils ont donnés 6 mois pour migrer sur la nouvelle API après quoi, ils refusent l’accès aux utilisateurs de l’ancienne API (qui était beaucoup moins restrictive).
L’échéance est arrivé à terme la semaine dernière il me semble. Donc maintenant oui, faut s’authentifier pour faire la moindre action.

Twitter c’est comme Facebook, c’est pas des bisounours et c’est pas du Libre et ouvert hein.

http://www.developpez.net/forums/d1253609/club-professionnels-en-informatique/actualites/twitter-api-11-plus-regles-moins-tweets/ a écrit :

Cette nouvelle mise à jour de l'API prévoit trois changements. La première concerne l'authentification qui devient obligatoire pour chaque appel d'API. En d'autres termes, Twitter veut connaître qui vous êtes, et vous autoriser avant d'avoir les données de l'API.

Deuxième changement, le nombre d'appels limité par heure. Dans la version 1.0, le nombre d'appels d’API par heure était limité à 350, peu importe le type de requête. Selon Twitter, cette approche unifiée avait pénalisé certains types d'appels fréquents. À présent, le nombre passe à 720 pour les appels les plus utilisés, tels que l'affichage de tweets ou d'informations de profil. Pour des appels plus complexes, la limite est fixée à 60. Pour passer outre ces 60, le développeur devrait probablement payer, ce qui concrétiserait ainsi une volonté de rentabilisation de Twitter.

Le troisième changement concerne le « Guide de style » des développeurs. On observe ainsi que les lignes directrices d'affichage deviennent des exigences, y compris pour les applications mobiles qui seront introduites, sous peine de voir sa clé révoquée par Twitter.

Dernière modification par grim7reaper (Le 16/06/2013, à 12:35)

Hors ligne

#1400 Le 16/06/2013, à 13:12

Rolinh

Re : /* Topic des codeurs [8] */

Bon bah... Je vais bien être obligé de faire avec... sad

Hors ligne