netmask in a script

Dazed_75 lthielster at gmail.com
Fri Oct 28 15:04:28 MST 2011


Yes Thomas.  If you look back a few messages in the thread, you will see
that not only was it suggested, but that is how I solved my need.  Thank you
though.

On Fri, Oct 28, 2011 at 1:28 PM, thomas at redhat.com <thomas at redhat.com>wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Have you looked at ipcalc? It does some really cools stuff and can be
> scripted.
>
> On 10/27/2011 06:19 PM, Brian Cluff wrote:
> > I've never had a need to do any bit twiddling in bash... thanks for this
> > solution,  It was very educational.
> >
> > Brian Cluff
> >
> > On 10/27/2011 11:43 AM, Dale Farnsworth wrote:
> >> Larry wrote:
> >>> I would like to apply a netmask to an arbitrary IP in a bash/dash
> script
> >>> (e.g. apply 255.255.255.0 to 173.10.3.155 to get 173.10.3.0).  Is
> >>> there any
> >>> easy way to do that without taking the IP apart, doing 4 operations and
> >>> reassembling the results?
> >>
> >> I know you said without disassembly/reassembly, but here are some
> >> bash functions that apply the mask using disassembly/reassembly.
> >>
> >> ===================== begin =======================
> >> to_int()
> >> {
> >>     # Convert from dotted-quad to integer
> >>     local i=$1
> >>     local OIFS="$IFS"
> >>     IFS=.
> >>     i=($i)
> >>     IFS="$OIFS"
> >>     echo $(((${i[0]}<<  24) + (${i[1]}<<  16) + (${i[2]}<<  8) +
> >> ${i[3]}))
> >> }
> >>
> >> to_ip()
> >> {
> >>     # Covert from integer to dotted-quad
> >>     local d=$1
> >>     echo $(($d>>  24)).$(($d>>  16&  255)).$(($d>>  8&
>  255)).$(($d&255))
> >> }
> >>
> >> and_ip()
> >> {
> >>     # And two ip addresses in dotted-quad format
> >>     local ip1=$1
> >>     local ip2=$2
> >>     echo $(to_ip $(($(to_int $ip1)&  $(to_int $ip2))))
> >> }
> >> ===================== end =======================
> >>
> >> Just pass the ip and netmask to and_ip:
> >> Example:
> >>
> >> $ and_ip 11.22.33.44 255.255.255.0
> >> 11.22.33.0
> >>
> >> -Dale
> >> ---------------------------------------------------
> >> PLUG-discuss mailing list - PLUG-discuss at lists.plug.phoenix.az.us
> >> To subscribe, unsubscribe, or to change your mail settings:
> >> http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss
> >>
> >
> > ---------------------------------------------------
> > PLUG-discuss mailing list - PLUG-discuss at lists.plug.phoenix.az.us
> > To subscribe, unsubscribe, or to change your mail settings:
> > http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss
>
>
> - --
> Thomas Cameron, RHCA, RHCSS, RHCDS, RHCVA, RHCX
> Chief Architect, Canada and Central US
> 512-241-0774 office / 512-585-5631 cell
> http://people.redhat.com/tcameron/
> IRC: choirboy / AIM: rhelguy / Yahoo: rhce_guy /Google+
> http://ongpl.us/tdc
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v2.0.14 (GNU/Linux)
> Comment: Using GnuPG with Red Hat - http://enigmail.mozdev.org/
>
> iEYEARECAAYFAk6rEIAACgkQmzle50YHwaBn/wCffqkZgVXNF7gvR+ia6nRqcZ9A
> 7SEAnRDstKmHWlXlQjNnl+EVafa/Zzb8
> =p4AW
> -----END PGP SIGNATURE-----
> ---------------------------------------------------
> PLUG-discuss mailing list - PLUG-discuss at lists.plug.phoenix.az.us
> To subscribe, unsubscribe, or to change your mail settings:
> http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss
>



-- 
Dazed_75 a.k.a. Larry

The spirit of resistance to government is so valuable on certain occasions,
that I wish it always to be kept alive.
  - Thomas Jefferson
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.PLUG.phoenix.az.us/pipermail/plug-discuss/attachments/20111028/ebd5ba1c/attachment.html>


More information about the PLUG-discuss mailing list