spørgsmål til python-folket
Mit forhold til Python kan bedst opsummeres som on/off så jeg kan ikke specielt meget af sproget men jeg kan rimeligvis læse op på det :)
Jeg har til sinde at erstatte nogle Bash scripts som jeg ikke er specielt glad for - til dette er Python valgt.
import subprocess
def runBash(cmd):
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
out = p.stdout.read().strip()
return out # this is the stdout from the shell command
Denne snippet snuppet fra:
http://www.redhatmagazine.com/2008/02/07/python-for-bash-scripters-a-we…
og den fungerer på sin vis også fint for de fleste ting, men jeg har dog fundet et problematisk eksempel:
iwconfig skal returnere:
----
lo no wireless extensions.
eth0 no wireless extensions.
wmaster0 no wireless extensions.
wlan0 IEEE 802.11 ESSID:"mitLan"
Mode:Managed Frequency:2.437 GHz Access Point: 00:00:00:00:00:00
Bit Rate=54 Mb/s Tx-Power=15 dBm
Retry min limit:7 RTS thr:off Fragment thr=2352 B
Link Quality=71/100 Signal level=-63 dBm Noise level=-127 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
ppp0 no wireless extensions.
----
Og det gør den også.
EDIT:
WHOOOPS.. roder lige lidt mere med det.. Sorry :/ Vil opdatere tråden såfremt mine formodninger viser sig ikke at holde stik.
- Log in to post comments
Kommentarer1
Re: spørgsmål til python-folket
Ok her er problemet:
unixCommand = r"""iwconfig 2>/dev/null|grep wlan0 | tr -s " "|cut -d " " -f4|cut -d \" -f2"""
result = runBash(unixCommand)
dette returnerer ganske vidst mit ESSID. Men jeg har været nødt til at prefixe stringen med r for raw-interpretation for ikke at komme ind i store problemer med hhv. egentlige gåseøjne og mulige escape-character sequences.
Hvordan kommer jeg mere elegant om dette således "wlan0" kan erstattes af identifier'en på en variabel ?