| #!/bin/bash |
| |
| # This shell script sets all the group D-Bus objects |
| # in /xyz/openbmc_project/led/groups/ to true or false. |
| # If the group is in excluded list, then, they are not |
| # altered |
| |
| function usage() |
| { |
| echo "led-set-all-groups-asserted.sh [true/false] [optional groups to be excluded]" |
| echo "Example: led-set-all-groups-asserted.sh true" |
| echo "Example: led-set-all-groups-asserted.sh false bmc_booted power_on" |
| return 0; |
| } |
| |
| # We need at least 1 argument |
| if [ $# -lt 1 ]; then |
| echo "At least ONE argument needed"; |
| usage; |
| exit 1; |
| fi |
| |
| # User passed in argument [true/false] |
| action=$1 |
| |
| # If it is not "true" or "false", exit |
| if [ "$action" != "true" ] && [ "$action" != "false" ]; then |
| echo "Bad argument $action passed"; |
| usage; |
| exit 1; |
| fi |
| |
| # Get the excluded groups, where $@ is all the arguments passed |
| index=2; |
| excluded_groups="" |
| |
| for arg in "$@" |
| do |
| if [ "$arg" == "$action" ] |
| then |
| # Must be true/false |
| continue |
| elif [ $index -eq $# ] |
| then |
| excluded_groups="${excluded_groups}$arg" |
| else |
| excluded_groups="${excluded_groups}$arg|" |
| fi |
| ((index+=1)) |
| done |
| |
| # Now, set the LED group to what has been requested |
| if [ ${#excluded_groups} -eq 0 ] |
| then |
| for line in $(busctl tree xyz.openbmc_project.LED.GroupManager | grep -e groups/ | awk -F 'xyz' '{print "/xyz" $2}'); |
| do |
| busctl set-property xyz.openbmc_project.LED.GroupManager "$line" xyz.openbmc_project.Led.Group Asserted b "$action"; |
| done |
| else |
| for line in $(busctl tree xyz.openbmc_project.LED.GroupManager | grep -e groups/ | grep -Ev "$excluded_groups" | awk -F 'xyz' '{print "/xyz" $2}'); |
| do |
| busctl set-property xyz.openbmc_project.LED.GroupManager "$line" xyz.openbmc_project.Led.Group Asserted b "$action"; |
| done |
| fi |
| |
| # Return Success |
| exit 0 |