In fact you quoted parts of the 'here-doc', but you're right it isnt obvious.
Thought it was, due to the escapes.
Also, seems i was editing my post while you wrote the answer, i've already removed the 'kill' signall, with no change.
Sorry about that.
The traps_{save,restore} arent (really) used yet (outside of that script).
As of now (past, until now), the generated ./tuirc did only contain TUI_DIR_{variables}, and the injection_protection.
Which was sourced by the already existing and hardcoded ./bin/tuirc. (which is either sourced or executed - to config, etc).
End goal is to replace the current hardcoded ./bin/tuirc with the generated ./tuirc which - as soon it works - will become the ./bin/tuirc.
But i guess this is only relevant to me.
Anyway, here's the full script: ./scripts/gen-tuirc.sh
NOTE: the commented out cat tuirc.tpl results in an endless loop, as the *tpl was not adjusted to the recent changes (it still sources 'itself' as its origin is/was bin/tuirc).
Also, all the functions/variables of the *tpl file are already present in the executed (not visible here) bin/tuirc.
Code:
#!/usr/bin/env bash
# ------------------------------------------------------------------------
# Copyright (c) 2015 Simon Arjuna Erat (sea) <erat.simon@gmail.com>
# All rights reserved.
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>
# ------------------------------------------------------------------------
for tc in /usr/var/tmp /var/tmp /tmp $HOME/.cache;do [ -w "$tc" ] && break;done
for tl in /usr/var/log /var/log $HOME/.config/tui/logs;do [ -w "$tc" ] && break;done
source ./tui_dirs.conf
cat << EOS
#!/usr/bin/env bash
# ------------------------------------------------------------------------
# Copyright (C) 1996-2015 Simon Arjuna Erat (sea) <erat.simon@gmail.com>
# All rights reserved.
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>
# ------------------------------------------------------------------------
#
# This file provides the core of the heart
#
# This project
TUI_VERSION=$(gawk -F= '/APP_VER/ {print $2}' ./configure.yassi|head -n1) # 0.9.4
# This script
TRC_VERSION=3.0
#TUI_AUTHOR="Simon Arjuna Erat (sea), Switzerland"
#
# This file is NOT meant to be changed.
#
[ -z "\$TUI_DIR_CONF" ] && readonly TUI_DIR_CONF="$SYSCONFDIR/tui"
[ -z "\$TUI_DIR_SYSTEM" ] && readonly TUI_DIR_SYSTEM="$DATADIR"
#
# Paths : Used to run TUI
#
TUI_DIR_TEMP="$tc"
TUI_DIR_LOG="$tl"
TUI_DIR_THEMES="\$TUI_DIR_SYSTEM/themes"
[ -z "\$TUI_DIR_TEMPLATES" ] && readonly TUI_DIR_TEMPLATES="\$TUI_DIR_SYSTEM/templates"
[ -z "\$TUI_DIR_FUNCTIONS" ] && readonly TUI_DIR_FUNCTIONS="\$TUI_DIR_SYSTEM/functions"
[ -z "\$TUI_DIR_LOCALE" ] && readonly TUI_DIR_LOCALE="\$TUI_DIR_SYSTEM/locale"
[ -z "\$TUI_DIR_LIST" ] && readonly TUI_DIR_LIST="\$TUI_DIR_SYSTEM/lists"
#
# Files
# Direct access to the most important configuration files for the System
#
[ -z "\$TUI_FILE_CONF_APPS" ] && readonly TUI_FILE_CONF_APPS="\$TUI_DIR_CONF/apps.conf"
[ -z "\$TUI_FILE_CONF_COLORS" ] && readonly TUI_FILE_CONF_COLORS="\$TUI_DIR_CONF/colors.conf"
[ -z "\$TUI_FILE_CONF_COMMANDS" ] && readonly TUI_FILE_CONF_COMMANDS="\$TUI_DIR_CONF/commands.conf"
[ -z "\$TUI_FILE_CONF_SETTINGS" ] && readonly TUI_FILE_CONF_SETTINGS="\$TUI_DIR_CONF/settings.conf"
[ -z "\$TUI_FILE_CONF_SYSTEM" ] && readonly TUI_FILE_CONF_SYSTEM="\$TUI_DIR_CONF/tui.conf"
[ -z "\$TUI_FILE_CONF_STATUS" ] && readonly TUI_FILE_CONF_STATUS="\$TUI_DIR_CONF/status.conf"
[ -z "\$TUI_FILE_CONF_SHORTS" ] && readonly TUI_FILE_CONF_SHORTS="\$TUI_DIR_CONF/shorts.conf"
[ -z "\$TUI_FILE_CONF_ALIAS" ] && readonly TUI_FILE_CONF_ALIAS="\$TUI_DIR_CONF/shorts-alias.conf"
#
# Low level workarounds, fallbacks and 'make sures' before the system config is read
#
HOMEBASE="$HOMEBASE" # This should provide OS independant base for regular users.
HOME="\${HOME:-\$(eval echo ~\${SUDO_USER:-\$USER})}"
TERM="\${TERM:-GNU\057Linux}"
WIDTH="\${COLUMNS:-\$(tput cols)}"
HEIGHT="\${LINES:-\$(tput lines)}"
TUI_THEME="default"
AWK=\gawk
GREP=\grep
SED=\sed
LS=\ls
#
# Color and other formatting
# Since this is also for 'endusers', this is all small letters
#
reset="\033[0m" ; invert="\033[7m"
bold="\033[1m" ; stroke="\033[9m" ; underline="\033[4m"
# --- Colors : foreground ----- Colors : background ------------
black="\033[30m" ; bg_black="\033[40m"
red="\033[31m" ; bg_red="\033[41m"
green="\033[32m" ; bg_green="\033[42m"
yellow="\033[33m" ; bg_yellow="\033[43m"
blue="\033[34m" ; bg_blue="\033[44m"
purple="\033[35m" ; bg_purple="\033[45m"
cyan="\033[36m" ; bg_cyan="\033[46m"
white="\033[37m" ; bg_white="\033[47m"
#
# Protection and Error handling
#
break_on_injections() { # ARGS
# Searches for injection subjects
# Returns true if it finds some
trap − HUP INT QUIT ABRT KILL ALRM TERM EXIT
typeset arg ac=0
for arg do
ac="$((ac+=1))"
case "$arg" in
(*[';´|<&>']*|*':('*|*':-'*)
printf "%s\n" "Aborting, injection detected! arg\${ac}='\$arg'"
return 0
;;
esac
done
trap − HUP INT QUIT ABRT ALRM TERM EXIT
return 1
}
msg_error() { # CALLER SCRIPT FUNCNAME LINENO [CONTENT]
# Prints an error message and exits
#
caller="\$1" script="\$2" fname="\$3" lineno="\$4"
shift 4
content=($(echo "\${@}"))
printf '\r\t%s:\t%s\n' \\
"$(gettext 'Caller of script')" "\$caller" \\
"$(gettext 'Scriptname')" "\$script" \\
"$(gettext 'Functionname')" "\$fname" \\
"$(gettext 'Linenumber')" "\$lineno"
for cont in "\${content[@]}";do
printf '\t%s\n' "\$cont"
done
trap − HUP INT QUIT ABRT KILL ALRM TERM EXIT
exit 1
}
#
# Traps & Error messages
#
traps_save(){ saved_traps=\$(trap) ; export saved_traps ; }
traps_restore() { eval \$saved_traps;}
export -f msg_error traps_save traps_restore
# Set and save basic error message traping,
trap "msg_error \${CALLER:-\$0} \$0 \${FUNCNAME:-NON-FUNCTION} \$LINENO '\$@' " INT QUIT TERM
## HUP INT QUIT ABRT KILL ALRM TERM ## 1 2 3 6 9 14 15
traps_save # Save initial traps
EOS
#cat scripts/tuirc.tpl
Simple said, the only NEW parts are msg_error and everything below until EOS.
Changing back there helps, to get rid of the 'invalid signal' messages.
However, these remains:
Code:
/usr/bin/tui-print: line 1: $'\342\210\222': command not found
I do know i've used 'somewhere' 'something like' (pseudo code): $'var'
But me cant find that anymore...
Code:
0 ~/prjs/tui $ grep "\$\'" */*
bin/tui-ftp: NUM=$$
bin/tui-log: NUM=$$
bin/tui-tar: $showBar && tui-progress -rbm $size_tarball -i $$
bin/tui-tar: $showBar && tui-progress -rbm $org_size -i $$
grep: docs/samples: Is a directory
grep: docs/tex: Is a directory
grep: locale/Anticipate-po-files: Is a directory
grep: scripts/distro: Is a directory
grep: scripts/old: Is a directory
grep: struct/bol: Is a directory
grep: struct/conf: Is a directory
grep: struct/new: Is a directory
grep: struct/str: Is a directory
grep: templates/browser.dir: Is a directory
grep: templates/manpage: Is a directory
grep: templates/scripts: Is a directory
By now i still have no idea why the invalid signals occour, or why i cant find the $' in any scripts...
Any ideas or advice from here?
Thank you in advance.
Hello
I am trying to check that SNMP traps could be sent from one server to other .
I am running this command from receiving server to see it can receive it
/usr/sbin/snoop udp port 162
and on the sending end I am running this commad
cst051 UDP D=162 S=1480 LEN=120
but i am... (1 Reply)
Well, I don't know where exactly to ask this doubt so I'm asking in the newbie section. I was reading about traps and interrupts when I thought of traps as something that cease the control of the OS from the user and interrupts that cease the control yet provide support for multitasking. Am I right... (3 Replies)
Hi all,
I have a Sun Solaris 9 box which acts as a firewall. Sometimes if multiple actions which cause snmp traps occur very close together, a single snmp trap that is sent containing the text for multiple alarms. I would like to prevent that and have a trap sent for each action which would... (0 Replies)
Good morning to you all
I´m kinda of a noob to scripting, and my knowledge is still very basic: anyway, I´ve developed a small .sh script with the following purpose:
- it will check a result file, checking if it has any values, or if it´s empty
- if it´s empty it will send an email
What... (0 Replies)
Hello there....unix users :)
I hope you can help me with this:
I need open a doc file or xls files and work this files whit a bash script.
For example: Open a doc file and copy information from a txt file in this doc file or xls file.
Is it possible?
Sorry for my english...I'm chilean... (3 Replies)
Hi all,
lately i managed to install SNMP agent on Solaris 9 & 10. The second objective is now to configure traps. However (since i'm totally new to the SUN world) i don't know a way of how to start. Can somebody help me with details? What is the first thing that you need to do to start trapping?... (3 Replies)
Hello everyone!
I have a text file with the next content:
2010-04-15 15:21:15 Minor 15605325 1531 Alarm name = IAD Equipment In Service location=iad01.tecnac.camino.illapel, Module=26
and I want send traps with the informationn of this file.
How I can do this?
Many... (3 Replies)
Hi,
We are using Zyrion Traverse to monitor all the servers. I like to set the traps on all of the Linux servers to send the traps to that servers.
So for on the /etc/snmp/snmp.conf file, this is what I have...
### SNMP Traps ###
trap2sink x.x.x.x # Traverse server
My... (4 Replies)
Hi all Solaris Experts,
What are the traps and pitfalls in using Solaris zones?
Specifically, what tools, utilities, system calls don't work or work differently in a non-global zone?
I'm new to zones and I've already encountered one difference which is very significant to me:
orphan... (5 Replies)
Hi,
I tried to run snmptrapd from my customized service in centos 5.7 machine... the command used to start snmptrapd is ....
/opt/snmpdemo/bin/snmptrapd -Le -c /opt/snmpdemo/etc/snmp/snmptrapd.conf -n -C -t -m ""
And tried to trigger a trap... Trap got triggered but snmptrapd didn't... (0 Replies)