Stand up and be counted - BSDStats Project
Philip Hallstrom
freebsd at philip.pjkh.com
Thu Aug 3 21:57:58 UTC 2006
> pciconf -lv needs to be parsed, this being the hard step, into a string that
> can be sent via HTTP ... this is the hard part because it has to be done
> as/in a shell script ... anyone out there *really* good at shell programming?
>
> What needs to happen is:
>
> pcib4 at pci6:0:2: class=0x060400 card=0x00000044 chip=0x032a8086 rev=0x09
> hdr=0x01
> vendor = 'Intel Corporation'
> device = '6700PXH PCI Express-to-PCI Express Bridge B'
> class = bridge
> subclass = PCI-PCI
>
> Needs to be converted into:
>
> device=pcib&vendor=Intel+Corporation&device=6700PXH+PCI+Express-to-PCI+Express+Bridge+B&class=bridge&subclass=PCI-PCI
>
> So that the final query would look something like:
>
> fetch http://bsdstats.hub.org/report.php?id=`cat
> /tmp/getid`&device=pcib&vendor=Intel+Corporation&device=6700PXH+PCI+Express-to-PCI+Express+Bridge+B&class=bridge&subclass=PCI-PCI
This will get you close. Just change the "echo" line...
----------------------------------------------------------------------------------------------
#!/bin/sh
IFS="
"
query_string=""
for line in `pciconf -lv`
do
echo $line | grep -qs "^[a-z]"
if [ $? -eq 0 ]
then
if [ -n "$query_string" ]
then
echo "http://foo.com/bar.php?"$query_string
query_string=""
fi
else
query_string=$query_string`echo $line | sed -e 's/^ *//' -e 's/ *=/=/' -e 's/= */=/' -e 's/ $//'`"&"
fi
done
----------------------------------------------------------------------------------------------
More information about the freebsd-questions
mailing list