my lame attempt at a shell script...
Eric F Crist
ecrist at secure-computing.net
Mon Jan 3 20:23:03 PST 2005
On Jan 3, 2005, at 8:21 PM, Timothy Luoma wrote:
>
> On Jan 3, 2005, at 6:28 PM, Eric F Crist wrote:
>
>> A couple more questions, then I'm done. Promise.
>>
>> I need to verify whether or not there is an entry for
>> grog_firewall_oif
>> and grog_firewall_iif in /etc/rc.conf. If not, I want to exit with an
>> error.
>
> You want to check for either "grog_firewall_oif" or
> "grog_firewall_iif" in /etc/rc.conf
>
> egrep -v "^#" /etc/rc.conf |\
> egrep -q "grog_firewall_oif | grog_firewall_iif" || (echo "$0" ; exit
> 1)
>
> The first line says "skips the comment lines" (the ones that begin
> with #)
>
What does the second line do? I tried, apparently, to accomplish the
same
thing with some different syntax, yet unsuccessfully.
>> Also, a little more advanced, I need to pull information from an
>> ifconfig output. I need to pull network numbers for both the internal
>> interface, as well as external interface. For example,
>>
>> vr0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>> inet 192.168.1.5 netmask 0xffffff00 broadcast 192.168.1.255
>> inet6 fe80::20e:a6ff:feb9:2d3d%vr0 prefixlen 64 scopeid 0x3
>> ether 00:0e:a6:b9:2d:3d
>> media: Ethernet autoselect (100baseTX <full-duplex>)
>> status: active
>>
>> I don't actually need my own address, I need to be able to figure out
>> that the system, based on the above output, is on the 192.168.1.0/24
>> network. This will be input into my firewall rulesets.
>>
>> I imagine that there's a util or command around that can do this, or I
>> can code out the math, but there's got to be an easier way.
>
> How much can you assume? Will you know the interface? If so it's
> fairly easy
>
> ifconfig vr0 |\
> tr '\012' ' ' |\
> sed 's#.*inet ##; s# netmask.*##'
>
> roughly translated:
> line 1: give me the information for vr0 only
> line 2: replace the end of line (\012) and replace them with a space
> line 3: delete everything from the beginning of the line up to "inet "
> and then delete everything from " netmask" to the end of the line
>
> Put it into a variable
>
> MY_IP=`ifconfig vr0 |\
> tr '\012' ' ' |\
> sed 's#.*inet ##; s# netmask.*##'`
>
> TjL
I can assume everything, since grog_firewall_oif *should* be a value
such as above. On my system, grog_firewall_oif will be ath0. This
isn't assumed, but rather defined for me. I would write the above line
as follows (please verify syntax):
ifconfig $grog_firewall_oif |\
tr '\012' ' ' |\
sed 's#.*inet ##; s# netmask.*##'
oif_ip=`ifconfig $grog_firewall_oif |\
tr '\012' ' ' |\
sed 's#.*inet ##; s# netmask.*##'`
This is a lot of help, however, if you read:
>> I don't actually need my own address, I need to be able to figure out
>> that the system, based on the above output, is on the 192.168.1.0/24
>> network.
I need my NETWORK address, in this case 192.168.1.0 (with netmask),
which would be 192.168.1.0/24
Thanks.
_______________________________________________________
Eric F Crist "I am so smart, S.M.R.T!"
Secure Computing Networks -Homer J Simpson
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 194 bytes
Desc: This is a digitally signed message part
Url : http://lists.freebsd.org/pipermail/freebsd-questions/attachments/20050103/1ea7ff24/PGP.bin
More information about the freebsd-questions
mailing list