On 03/08/2018 08:40 AM, Tom Eastep wrote:
> On 03/07/2018 02:31 AM, Simon Matter wrote:
>>> On 3/7/2018 8:58 AM, Simon Matter wrote:
>>>> Hi Tom and all,
>>>>
>>>> I've just decided to add some more autodetection code some params file.
>>>>
>>>> One of the lines looks something like this:
>>>> read -rs LOC_NETADDR DUMMY 2> /dev/null < <(ip -o route list proto
>>>> kernel
>>>> scope link dev "$LOC_IF" 2> /dev/null)
>>>>
>>>> The result was a shell error:
>>>> /etc/shorewall/params: line 49: syntax error near unexpected token `<'
>>>> /etc/shorewall/params: line 49: `read -rs LOC_NETADDR DUMMY 2> /dev/null
>>>> <
>>>> <(ip -o route list proto kernel scope link dev "$LOC_IF" 2> /dev/null)'
>>>>
>>>> Yes of course, because the line contains bashism. But, since the line is
>>>> not portable anyway and all our systems have bash by default, I've
>>>> decided
>>>> to configure it via /etc/shorewall/shorewall.conf:
>>>> SHOREWALL_SHELL=/bin/bash
>>>>
>>>> Retried, and the error was the same. I'm wondering if I missed something
>>>> because the docs say this:
>>>> /etc/shorewall/params - use this file to set shell variables that you
>>>> will
>>>> expand in other files. It is always processed by /bin/sh or by the shell
>>>> specified through SHOREWALL_SHELL in /etc/shorewall/shorewall.conf.
>>>>
>>>> Something doesn't seem to work as I expected.
>>>>
>>>> Anyway, I found a simple workaround, in the params file I do:
>>>>
>>>> --%-------
>>>> set +o posix
>>>>
>>>> # Run bashism code here
>>>>
>>>> set -o posix
>>>> --%-------
>>>>
>>>> Works fine and I even like it more than modifying shorewall.conf.
>>>>
>>>
>>> According to Tom, the 'SHOREWALL_SHELL' variable in
>>> /etc/shorewall/shorewall.conf is not used in this context:
>>>
>>> https://sourceforge.net/p/shorewall/mailman/shorewall-users/thread/84192d62-6163-94c3-4075-41391601a136%40gmail.com/#msg36160992
>>>
>>>
>>> ... ~/git/shorewall/code
>>> $ git grep -n /params -- *lib*
>>> Shorewall/lib.cli-std:1468:     if [ -f $g_shorewalldir/params ]; then
>>> Shorewall/lib.cli-std:1469:         . $g_shorewalldir/params
>>
>> Okay, but the man page shorewall-params says something different:
>>
>> The file is always processed by /bin/sh or by the shell specified through
>> SHOREWALL_SHELL in shorewall.conf[1] (5) so the full range of shell
>> capabilities may be used.
>>
>> Even if I set SHOREWALL_SHELL=/bin/bash then 'params' is still processed
>> by /bin/sh.
>>
> 
> I need to change shorewall.conf(5). Because the params file is processed
> before shorewall[6].conf, it is processed using /bin/sh.
> 

I actually need to change shorewall-params(5). That's where the
incorrect statement appears.

-Tom
-- 
Tom Eastep        \   Q: What do you get when you cross a mobster with
Shoreline,         \     an international standard?
Washington, USA     \ A: Someone who makes you an offer you can't
http://shorewall.org \   understand
                      \_______________________________________________

Attachment: signature.asc
Description: OpenPGP digital signature

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Shorewall-users mailing list
Shorewall-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/shorewall-users

Reply via email to