Sponsored Content
Top Forums UNIX for Advanced & Expert Users [BASH] Errormessages and Traps with a 'here-doc' Post 302963222 by sea on Saturday 26th of December 2015 04:43:42 AM
Old 12-26-2015
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.
 

10 More Discussions You Might Find Interesting

1. Solaris

SNMP traps

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)
Discussion started by: Ajwat
1 Replies

2. UNIX for Dummies Questions & Answers

Traps and Interrupts

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)
Discussion started by: Legend986
3 Replies

3. Infrastructure Monitoring

Sun Solaris 9 Traps Contain Multiple Alarms

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)
Discussion started by: g0ld2k
0 Replies

4. Infrastructure Monitoring

Shell Script - Generate SNMP Traps

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)
Discussion started by: zarahel
0 Replies

5. Shell Programming and Scripting

Open and work on a .doc file with bash script

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)
Discussion started by: bobbasystem
3 Replies

6. Infrastructure Monitoring

SNMP Traps

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)
Discussion started by: Wizard_1979
3 Replies

7. Shell Programming and Scripting

Send traps from text file

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)
Discussion started by: bobbasystem
3 Replies

8. UNIX for Dummies Questions & Answers

SNMP Traps

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)
Discussion started by: samnyc
4 Replies

9. Solaris

Solaris Zones: traps and pitfalls

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)
Discussion started by: ad101
5 Replies

10. Linux

Snmptrapd is not receiving generated traps in centos 5.7

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)
Discussion started by: sharathpadman
0 Replies
All times are GMT -4. The time now is 10:25 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy