Forum » Programiranje » Kako narediti python "cmd line" program
Kako narediti python "cmd line" program
Miha9888 ::
Zravo! Spoprijemam se z problemom v pythonu. Želim narediti program, ki izpiše vsa omrežja, na katera je bil računalnik že povezan in nato odpre njihovo natancnejso konfiguracijo, za vsakega. Do sedaj mi je uspelo spisati tole nato pa se mi je ustavilo:
kot rezulatat "command1" dobim celo vrstico vseh user profilov. Kot command2 želim commando "netsh wlan show profile (ime omrežja)" Torej program bi le izvajal komando "netsh wlan show profiles" in "netsh wlan show profiles (ime omrežja)". spremenljivka je le ime omrežij, katerih nevem kako bi spravil v komando.
Če nisem dovolj razumljiv, lahko poizkusim še enkrat razložiti
najlepša hvala:)
import os command1 = os.popen("netsh wlan show profiles").read() print command1[]
kot rezulatat "command1" dobim celo vrstico vseh user profilov. Kot command2 želim commando "netsh wlan show profile (ime omrežja)" Torej program bi le izvajal komando "netsh wlan show profiles" in "netsh wlan show profiles (ime omrežja)". spremenljivka je le ime omrežij, katerih nevem kako bi spravil v komando.
Če nisem dovolj razumljiv, lahko poizkusim še enkrat razložiti
najlepša hvala:)
- spremenil: bluefish ()
Miha9888 ::
bluefish hvala za odgovor:)
Sam sem še malo nov pri Pythonuin nevem tocno kako mislis, da bi uporabil argv, se ti da naredit primer?
hvala:)
Sam sem še malo nov pri Pythonuin nevem tocno kako mislis, da bi uporabil argv, se ti da naredit primer?
hvala:)
jype ::
Ne, argv ne bo odgovor zate. Kar iščeš je uporaba regularnih izrazov. Žal nimam Windows računalnika, da bi z njim preizkusil, ampak načeloma gre nekako takole:
import re for profile in re.findall(r': (.*)$', command1): cmd2 = 'netsh wlan show profile {profile}'.format(profile=profile) command2 = os.popen(cmd2).read() print command2
Miha9888 ::
jype hvala za pomoč:)
Sem prekopiral tole kodo pa mi napiše error, command1 is not defined
sem poizkusil še takole
pa sploh ni outputa :/
Sem prekopiral tole kodo pa mi napiše error, command1 is not defined
sem poizkusil še takole
import re, os command1 = os.popen("netsh wlan show profiles").read() for profile in re.findall(r': (.*)$', command1): cmd2 = 'netsh wlan show profile {profile}'.format(profile=profile) command2 = os.popen(cmd2).read() print command2
pa sploh ni outputa :/
Zgodovina sprememb…
- spremenil: bluefish ()
PromeuZ ::
Kaj pa v PS -> https://blogs.technet.microsoft.com/hey...
<!-- https://pisalnik.wordpress.com -->
Miha9888 ::
Sem tudi tole prebral pa mi ni kaj v pomoč. POmoje bi moralo delovati tole od jypeta vendar sam neznam dokončat kode
Miha9888 ::
No, sem še tole probaval
ampak kot ssids1 dobim tak zapis: 'SSID 1 : (ime omrežja)' kako bi se naredilo da bi mi izpisalo samo ime omrežja brez "ssid 1" na začetku?
Se opravičujem, neznam limat kode
import subprocess results = subprocess.check_output(["netsh", "wlan", "show", "network"]) results = results.replace("\r","") ls = results.split("\n") ls = ls[4:] ssids = [] x = 0 while x < len(ls): if x % 5 == 0: ssids.append(ls[x]) x += 1 print(ssids) ssids1 = ssids[0] results2 = subprocess.check_output(["netsh", "wlan", "show", "profile",ssids1]) print results2
ampak kot ssids1 dobim tak zapis: 'SSID 1 : (ime omrežja)' kako bi se naredilo da bi mi izpisalo samo ime omrežja brez "ssid 1" na začetku?
Se opravičujem, neznam limat kode
Zgodovina sprememb…
- spremenil: bluefish ()
bluefish ::
Kodo daš med [ st.koda ] in [ /st.koda ] (brez presledkov znotraj oglatih oklepajev) oziroma pri pisanju odgovora uporabiš gumb Vstavi kodo na začetku in koncu kode.
Zgodovina sprememb…
- spremenil: bluefish ()
ragezor ::
import re, os command1 = os.popen("netsh wlan show profiles").read() for profile in re.findall(r': (.*)', command1): cmd2 = 'netsh wlan show profile {profile}'.format(profile=profile) command2 = os.popen(cmd2).read() print command2
iz jypetovega regularnega izraza sem odstranil $, ki pomeni, da matcha zadeve na koncu stringa (oziroma pred newlinom na koncu stringa)
druga moznost je da dodas MULTILINE flag, ki pomeni, da bo $ matchal pred vsakim newlinom ne samo na koncu stringa
re.findall(r': (.*)$', command1, flags=re.MULTILINE)
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | C in funkcije ter #defineOddelek: Programiranje | 3968 (2329) | misek |
» | Program za set back time (RUN AS DATE)Oddelek: Programska oprema | 4866 (4490) | Yacked2 |
» | curl + sslOddelek: Programiranje | 794 (612) | MrStein |
» | Python vrstica v seznamOddelek: Programiranje | 965 (848) | brodul |
» | Python razcep nizaOddelek: Programiranje | 934 (801) | Invictus |