#!/bin/sh # wrapper for conditional setting of uci config # compare http://wiki.openwrt.org/doc/techref/uci # TODO: add more docs, see http://docs.ansible.com/developing_modules.html # parameters are command, key, value source ${1} unquoted_key="$(echo $key | sed -e s/\'//g)" unquoted_value="$(echo $value | sed -e s/\'//g)" # test if we need to apply a change case $command in 'set') [ "$(uci get "$unquoted_key")" = "$value" ] changed=$? ;; 'add_list') uci get "$unquoted_key" 2>/dev/null |grep -q "$value" changed=$? ;; esac if [ $changed -eq 0 ] then echo -n '{"changed": false}' else if [ -z "${_ansible_check_mode}" -o "${_ansible_check_mode}" = "False" ] then logger uci $(uci "${command}" ${unquoted_key}="${unquoted_value}") fi echo -n '{"changed": true, "msg": "executed uci '${command}' '${unquoted_key}'='${value}'"}' fi