Projekt apache_custom.conf - Reverse proxy usług/programów pod serwer Web http://qnap/aplikacja

Silas Mariusz

rm -rf /
Help us, GOD!
5 Kwiecień 2008
10 168
31
2 246
153
39
Nowy Sącz
forum.qnap.net.pl
QNAP
TS-x77
Ethernet
1 GbE
apache_custom.conf - Reverse proxy usług/programów pod serwer Web http://qnap/aplikacja
Kod:
######### HTTP REVERSE PROXY
LoadModule  proxy_module         modules/mod_proxy.so
LoadModule  proxy_http_module    modules/mod_proxy_http.so
# LoadModule proxy_ftp_module     modules/mod_proxy_ftp.so
# LoadModule proxy_connect_module modules/mod_proxy_connect.so
# LoadModule  headers_module       modules/mod_headers.so
# LoadModule  deflate_module       modules/mod_deflate.so
# LoadFile    /usr/lib/libxml2.so
# LoadModule  xml2enc_module       modules/mod_xml2enc.so

# LoadModule rewrite_module     modules/mod_rewrite.so
<IfModule ssl_module>
    SSLRandomSeed startup builtin
    SSLRandomSeed connect builtin
</IfModule>

<VirtualHost _default_:80>
#    DocumentRoot "${SRVROOT}/htdocs"
#    ServerName java-guru.serveblog.net
#    ServerAlias java-guru.no-ip.biz
#    ServerAlias java-guru.serveuser.com  
    ProxyRequests Off
    ProxyVia Off
    ProxyPreserveHost Off
    RewriteEngine on
    <Proxy *>
#    AddDefaultCharset off
        Order deny,allow
        Allow from all
    </Proxy>
 
    ProxyPass /transmission  http://localhost:9091/transmission
    ProxyPass /transmission/web  http://localhost:9091/transmission/web
    ProxyPassReverse /transmission  http://localhost:9091/transmission
    ProxyPassReverse /transmission/web  http://localhost:9091/transmission/web
 
    ProxyPass /wfm  http://localhost:8080/cgi-bin/fm.html
    ProxyPassReverse /wfm  http://localhost:8080/cgi-bin/fm.html
 
    ProxyPass /qdown  http://diogenes:8080/cgi-bin/Qdownload/qdownloadindex.cgi
    ProxyPassReverse /qdown  http://diogenes:8080/cgi-bin/Qdownload/qdownloadindex.cgi
         
    ProxyPass /cgi-bin  http://localhost:8080/cgi-bin
    ProxyPassReverse /cgi-bin  http://localhost:8080/cgi-bin
 
    ProxyPass /apps  http://localhost:8080/cgi-bin/apps
    ProxyPassReverse /apps  http://localhost:8080/cgi-bin/apss
 
    ProxyPass /libs  http://localhost:8080/libs
    ProxyPassReverse /libs  http://localhost:8080/libs
 
    ProxyPass /css  http://localhost:8080/cgi-bin/css
    ProxyPassReverse /css  http://localhost:8080/cgi-bin/css
 
    ProxyPass /langs  http://localhost:8080/cgi-bin/langs
    ProxyPassReverse /langs  http://localhost:8080/cgi-bin/langs
                 
    ProxyPass /qdown  http://localhost:8080/cgi-bin/Qdownload
    ProxyPassReverse /qdown http://localhost:8080/cgi-bin/Qdownload
 
    ProxyPass /qts  http://localhost:8080
    ProxyPassReverse /qts http://localhost:8080
 
    ProxyPass /siab http://127.0.0.1:4200/cnx_user
    ProxyPassReverse /siab http://127.0.0.1:4200/cnx_user
 
    RewriteLog "/share/HDA_DATA/apache/rewrite_https.log"
    RewriteLogLevel 3
    RewriteRule ^/(user-settings\.json.*)$  http://localhost:8080/cgi-bin/$1 [P]
    RewriteRule ^/(userConfig\.cgi.*)$  http://localhost:8080/cgi-bin/$1 [P]
#    RewriteRule ^(libs/.*)$  http://localhost:8080/$1 [P]
    RewriteRule ^/(libs/ds.*\.js.*)$  http://localhost:8080/cgi-bin/Qdownload/$1 [P]
    RewriteRule ^/(libs/ext.+\.js.*)$  http://localhost:8080/cgi-bin/Qdownload/$1 [P]
    RewriteRule ^/(libs/Notification\.js.*)$  http://localhost:8080/cgi-bin/Qdownload/$1 [P]
    RewriteRule ^/(libs/RowEditor\.js.*)$  http://localhost:8080/cgi-bin/Qdownload/$1 [P]
    RewriteRule ^/(libs/rpc\.js.*)$  http://localhost:8080/cgi-bin/Qdownload/$1 [P]
    RewriteRule ^/(res/css/.+\.css.*)$  http://localhost:8080/cgi-bin/Qdownload/$1 [P]
    RewriteRule ^/(lang/[A-Za-z]{3}\.js.*)$  http://localhost:8080/cgi-bin/Qdownload/$1 [P]
    RewriteRule ^/(ds.*\.cgi.*)$  http://localhost:8080/cgi-bin/Qdownload/$1 [P]     
</VirtualHost>

##### SSL REVERSE PROXY
LoadModule ssl_module modules/mod_ssl.so
SSLRandomSeed startup file:/dev/urandom 512
Listen 443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl
#SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:/usr/local/apache/logs/ssl_scache(512000)"
SSLSessionCacheTimeout  300
SSLMutex  "file:/usr/local/apache/logs/ssl_mutex"
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    SSLRequire %{SSL_CIPHER} !~ m/^(EXP|NULL)/
</Directory>

<VirtualHost _default_:443>
    DocumentRoot "/share/Qweb"
    ErrorLog /dev/null
    TransferLog /dev/null
    SSLEngine on
    SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!SSLv2:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM
    #SSLCertificateFile "/etc/stunnel/stunnel.pem"
    SSLCertificateFile "/share/HDA_DATA/apache/my-server.crt"
    SSLCertificateKeyFile "/share/HDA_DATA/apache/my-server.key"
    #SSLCertificateChainFile "/etc/config/apache/server-ca.crt"
    #SSLCACertificatePath "/etc/config/apache/ssl.crt"
    SSLCACertificateFile "/share/HDA_DATA/apache/my-rootCA.crt"
    #SSLCARevocationPath "/etc/config/apache/ssl.crl"
    #SSLCARevocationFile "/etc/config/apache/ssl.crl/ca-bundle.crl"
    SSLVerifyClient require
    SSLVerifyDepth  1
 
    ProxyRequests Off
    ProxyVia Off
    ProxyPreserveHost Off
    RewriteEngine on
    <Proxy *>
#    AddDefaultCharset off
        Order deny,allow
        Allow from all
    </Proxy>
 
    <FilesMatch "\.(cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory "/usr/local/apache/cgi-bin">
        SSLOptions +StdEnvVars
    </Directory>

    BrowserMatch ".*MSIE.*" \
             nokeepalive ssl-unclean-shutdown \
             downgrade-1.0 force-response-1.0
      
    ProxyPass /transmission  http://localhost:9091/transmission
    ProxyPass /transmission/web  http://localhost:9091/transmission/web
    ProxyPassReverse /transmission  http://localhost:9091/transmission
    ProxyPassReverse /transmission/web  http://localhost:9091/transmission/web
 
    ProxyPass /wfm  http://localhost:8080/cgi-bin/fm.html
    ProxyPassReverse /wfm  http://localhost:8080/cgi-bin/fm.html
 
    ProxyPass /qdown  http://diogenes:8080/cgi-bin/Qdownload/qdownloadindex.cgi
    ProxyPassReverse /qdown  http://diogenes:8080/cgi-bin/Qdownload/qdownloadindex.cgi
         
    ProxyPass /cgi-bin  http://localhost:8080/cgi-bin
    ProxyPassReverse /cgi-bin  http://localhost:8080/cgi-bin
 
    ProxyPass /apps  http://localhost:8080/cgi-bin/apps
    ProxyPassReverse /apps  http://localhost:8080/cgi-bin/apss
 
    ProxyPass /libs  http://localhost:8080/libs
    ProxyPassReverse /libs  http://localhost:8080/libs
 
    ProxyPass /css  http://localhost:8080/cgi-bin/css
    ProxyPassReverse /css  http://localhost:8080/cgi-bin/css
 
    ProxyPass /langs  http://localhost:8080/cgi-bin/langs
    ProxyPassReverse /langs  http://localhost:8080/cgi-bin/langs
                 
    ProxyPass /qdown  http://localhost:8080/cgi-bin/Qdownload
    ProxyPassReverse /qdown http://localhost:8080/cgi-bin/Qdownload
 
    ProxyPass /qts  http://localhost:8080
    ProxyPassReverse /qts http://localhost:8080
 
    ProxyPass /siab http://127.0.0.1:4200/cnx_user
    ProxyPassReverse /siab http://127.0.0.1:4200/cnx_user
 
    RewriteLog "/share/HDA_DATA/apache/rewrite_https.log"
    RewriteLogLevel 3
    RewriteRule ^/(user-settings\.json.*)$  http://localhost:8080/cgi-bin/$1 [P]
    RewriteRule ^/(userConfig\.cgi.*)$  http://localhost:8080/cgi-bin/$1 [P]
#    RewriteRule ^(libs/.*)$  http://localhost:8080/$1 [P]
    RewriteRule ^/(libs/ds.*\.js.*)$  http://localhost:8080/cgi-bin/Qdownload/$1 [P]
    RewriteRule ^/(libs/ext.+\.js.*)$  http://localhost:8080/cgi-bin/Qdownload/$1 [P]
    RewriteRule ^/(libs/Notification\.js.*)$  http://localhost:8080/cgi-bin/Qdownload/$1 [P]
    RewriteRule ^/(libs/RowEditor\.js.*)$  http://localhost:8080/cgi-bin/Qdownload/$1 [P]
    RewriteRule ^/(libs/rpc\.js.*)$  http://localhost:8080/cgi-bin/Qdownload/$1 [P]
    RewriteRule ^/(res/css/.+\.css.*)$  http://localhost:8080/cgi-bin/Qdownload/$1 [P]
    RewriteRule ^/(lang/[A-Za-z]{3}\.js.*)$  http://localhost:8080/cgi-bin/Qdownload/$1 [P]
    RewriteRule ^/(ds.+\.cgi.*)$  http://localhost:8080/cgi-bin/Qdownload/$1 [P] 
</VirtualHost>

apache.conf - zawierający na samym dole include do pliku apache_custom.conf
Bash:
#ServerType standalone
ServerRoot "/usr/local/apache"
LockFile /var/lock/apache.lock
PidFile /var/lock/apache.pid
#ScoreBoardFile /usr/local/apache/logs/apache.scoreboard
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
MinSpareServers 2
MaxSpareServers 5
StartServers 2
MaxClients 50
MaxRequestsPerChild 30
LoadModule php5_module modules/libphp5.so
Listen 80
User httpdusr
Group administrators
ServerAdmin admin@NAS
#ServerName NAS
TraceEnable off
ServerTokens Prod
DocumentRoot "/share/Qweb"
<Directory />
	Options FollowSymLinks
	AllowOverride None
	Order deny,allow
	Deny from all
</Directory>
<Directory "/share/Qweb">
	Options FollowSymLinks MultiViews
	AllowOverride All
	Order allow,deny
	Allow from all
</Directory>
<IfModule dir_module>
		DirectoryIndex index.html index.htm index.php
</IfModule>
AccessFileName .htaccess
<FilesMatch "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</FilesMatch>
UseCanonicalName Off
HostnameLookups Off
<Directory "/usr/local/apache/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
DefaultType text/plain
ErrorLog /dev/null
#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel crit
<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
		LogFormat "%{Referer}i -> %U" referer
		LogFormat "%{User-agent}i" agent
<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
#
# If you prefer a logfile with access, agent, and referer information
# (Combined Logfile Format) you can use the following directive.
#
</IfModule>
ServerSignature On
#
# Aliases: Add here as many aliases as you need (with no limit). The format is
# Alias fakename realname
#
<IfModule alias_module>
		Alias /v3_menu/ "/home/httpd/v3_menu/"
		<Directory "/home/httpd/v3_menu">
				AllowOverride None
				Order allow,deny
				Allow from all
		</Directory>
</IfModule>
<IfModule autoindex_module>
		AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
		AddIconByType (TXT,/icons/text.gif) text/*
		AddIconByType (IMG,/icons/image2.gif) image/*
		AddIconByType (SND,/icons/sound2.gif) audio/*
		AddIconByType (VID,/icons/movie.gif) video/*
		AddIcon /icons/binary.gif .bin .exe
		AddIcon /icons/binhex.gif .hqx
		AddIcon /icons/tar.gif .tar
		AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
		AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
		AddIcon /icons/a.gif .ps .ai .eps
		AddIcon /icons/layout.gif .html .shtml .htm .pdf
		AddIcon /icons/text.gif .txt
		AddIcon /icons/c.gif .c
		AddIcon /icons/p.gif .pl .py
		AddIcon /icons/f.gif .for
		AddIcon /icons/dvi.gif .dvi
		AddIcon /icons/uuencoded.gif .uu
		AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
		AddIcon /icons/tex.gif .tex
		AddIcon /icons/bomb.gif core
		AddIcon /icons/back.gif ..
		AddIcon /icons/hand.right.gif README
		AddIcon /icons/folder.gif ^^DIRECTORY^^
		AddIcon /icons/blank.gif ^^BLANKICON^^
		DefaultIcon /icons/unknown.gif
		ReadmeName README.html
		HeaderName HEADER.html
		IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
</IfModule>
#
# Document types.
#
<IfModule mime_module>
		TypesConfig /etc/config/apache/mime.types
		AddLanguage da .dk
		AddLanguage nl .nl
		AddLanguage en .en
		AddLanguage et .ee
		AddLanguage fr .fr
		AddLanguage de .de
		AddLanguage el .el
		AddLanguage he .he
		AddCharset ISO-8859-8 .iso8859-8
		AddLanguage it .it
		AddLanguage ja .ja
		AddCharset ISO-2022-JP .jis
		AddLanguage kr .kr
		AddCharset ISO-2022-KR .iso-kr
		AddLanguage nn .nn
		AddLanguage no .no
		AddLanguage pl .po
		AddCharset ISO-8859-2 .iso-pl
		AddLanguage pt .pt
		AddLanguage pt-br .pt-br
		AddLanguage ltz .lu
		AddLanguage ca .ca
		AddLanguage es .es
		AddLanguage sv .sv
		AddLanguage cs .cz .cs
		AddLanguage ru .ru
		AddLanguage zh-TW .zh-tw
		AddCharset Big5				 .Big5		.big5
		AddCharset WINDOWS-1251 .cp-1251
		AddCharset CP866				.cp866
		AddCharset ISO-8859-5 .iso-ru
		AddCharset KOI8-R		 .koi8-r
		AddCharset UCS-2				.ucs2
		AddCharset UCS-4				.ucs4
		AddCharset UTF-8				.utf8
		<IfModule negotiation_module>
				LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw
		</IfModule>
		AddType application/x-tar .tgz
		AddEncoding x-compress .Z
		AddEncoding x-gzip .gz .tgz
		AddType application/x-compress .Z
		AddType application/x-gzip .gz .tgz
		AddType application/x-httpd-php .php .php4 .php3 .phtml
		AddType application/x-httpd-php-source .phps
		AddHandler cgi-script .cgi
		AddType text/html .shtml
		AddHandler server-parsed .shtml
		AddHandler send-as-is asis
		AddHandler imap-file map
		AddHandler type-map var
</IfModule>
<IfModule mime_magic_module>
		MIMEMagicFile /etc/config/apache/magic
</IfModule>
<IfModule setenvif_module>
		BrowserMatch "Mozilla/2" nokeepalive
		BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
		BrowserMatch "RealPlayer 4\.0" force-response-1.0
		BrowserMatch "Java/1\.0" force-response-1.0
		BrowserMatch "JDK/1\.0" force-response-1.0
</IfModule>
<IfModule ssl_module>
	SSLRandomSeed startup builtin
	SSLRandomSeed connect builtin
</IfModule>
LoadModule deflate_module modules/mod_deflate.so
<IfModule mod_deflate.c>
DeflateCompressionLevel 2
AddOutputFilterByType DEFLATE text/html text/plain text/xml
AddOutputFilter DEFLATE js css
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.[0678] no-gzip
BrowserMatch \bMSIE\s7 !no-gzip !gzip-only-text/html
</IfModule>
Include /etc/config/apache/extra/apache-msv2.conf
Include /etc/config/apache/extra/apache-musicstation.conf
Include /etc/config/apache/extra/apache-photo.conf
Include /etc/config/apache/extra/apache-video.conf
Include /share/HDA_DATA/apache/apache-custom.conf
Include /etc/config/apache/extra/httpd-ajaxplorer.conf

Poniżej zawarte pomocnicze skrypty w celu zautomatyzowaniu procesu podmiany pliku oraz wykonaniu testów poprawności składni pliku apache.conf.

test-apache-conf.sh:
Bash:
#!/bin/sh
/usr/local/apache/bin/apache -t -f /etc/config/apache/apache.conf

grep-varexpansion.sh:
Bash:
#!/bin/sh
apache_conf=/etc/config/apache/apache.conf
apache_custom_conf=/share/HDA_DATA/apache/apache-custom.conf

/bin/grep "apache-custom" $apache_conf
echo "1: $?"
/bin/grep "$apache_custom_conf" $apache_conf
echo "2: $?"
/bin/grep ""$apache_custom_conf"" $apache_conf
echo "3: $?"



Przykładowy autorunmaster.sh wyzwolony przez autorun.sh podmieniający config apache, ssh i Optware:
Bash:
#!/bin/sh
# con /opt/bin/bash parece que no se lanza en boot
# con /bin/sh no funciona el redireccionamiento a funcion/process substitution
# this is called by autorun.sh
# /share/HDA_DATA/.qpkg/autorun/autorunmaster.sh

log=/share/HDA_DATA/.qpkg/autorun/autorunmaster.log
log(){
	/bin/echo "$(/bin/date '+%F %T.%3N') $1" >> $log
}
log "***** Starting autorunmaster.sh *****"
apache_conf=/etc/config/apache/apache.conf
apache_custom_conf=/share/HDA_DATA/apache/apache-custom.conf

exec >> $log 2>&1

# adding IPKG apps into system path ...
# Dani 12/11/2011 ESTO SE HACE EN /opt/Optware.sh
#/bin/cat /etc/profile | /bin/grep "PATH" | /bin/grep "/opt/bin" 1>>/dev/null 2>>/dev/null
# Bug fix for following: put IPKG first, per https://forum.qnap.com/viewtopic.php?f=124&t=15663
# was [ $? -ne 0 ] && /bin/echo "export PATH=$PATH":/opt/bin:/opt/sbin >> /etc/profile
#[ $? -ne 0 ] && /bin/echo "export PATH=/opt/bin:/opt/sbin:\$PATH" >> /etc/profile
log "PATH=$PATH"

#Dani 12/11/2011 modificado segun https://forum.qnap.com/viewtopic.php?f=85&t=18977
#FIRST start Optware and delete the /etc/rcS.d/QS100...sh
log "Starting Optware"
/etc/init.d/Optware.sh start
/bin/rm -f /etc/rcS.d/QS100Optware
log "Optware started"
log "Setting up custom scripts"
# Fin Dani 12/11/2011

#modificar configuracion apache. quiet grep search
/bin/grep -q $apache_custom_conf $apache_conf
if [ $? -eq 0 ]
	then
		log "$apache_conf already includes $apache_custom_conf. Nothing to be done."
	else
		log "$apache_conf does NOT include $apache_custom_conf. Including now."
		/bin/echo "Include $apache_custom_conf" >> $apache_conf
		log "Restarting apache"
		/etc/init.d/Qthttpd.sh restart
fi

log "Copying /usr/local/etc/services to /etc/services"
/bin/cp -f /usr/local/etc/services /etc/services
/bin/sleep 2
export OPTWARE_TARGET=cs08q1armel
log "Starting xinetd..."
if [ -e "/opt/sbin/xinetd" ]
	then
		/sbin/daemon_mgr xinetd start "/opt/sbin/xinetd"
		log "xinetd started"
#		sleep 5
	else
		log "xinetd not accessible"
fi
log "***** End of autorunmaster.sh *****"
/bin/sync
/bin/sleep 1

Qhttpd-test.sh:
Bash:
#!/bin/sh
APACHE_CONF="/etc/config/apache/apache.conf"
is_conf_broken()
{
	conf_size_min=4096
	conf_size=`/usr/bin/du -b "${APACHE_CONF}" | /bin/awk '{print $1}'`
	[ ! -z $conf_size -a $conf_size -le $conf_size_min ] && return 1
	if [ -x /usr/local/apache/bin/apache ]; then
		/usr/local/apache/bin/apache -t -f "${APACHE_CONF}" 1>/dev/null 2>/dev/null
		[ $? = 0 ] || return 1
	fi
	miss=0
	/bin/grep "^ServerRoot" "${APACHE_CONF}" >/dev/null
	[ $? = 0 ] || miss=$(($miss+1))
	/bin/grep "^Listen" "${APACHE_CONF}" >/dev/null
	[ $? = 0 ] || miss=$(($miss+1))
	/bin/grep "^DocumentRoot" "${APACHE_CONF}" >/dev/null
	[ $? = 0 ] || miss=$(($miss+1))
	/bin/grep "/home/httpd/v3_menu" "${APACHE_CONF}" >/dev/null
	[ $? = 0 ] || miss=$(($miss+1))
	[ $miss -eq 0  ] || return 1
	return 0
}
is_conf_broken
if [ $? = 0 ]
	then
		echo "Config ok"
	else
		echo "Config broken"
fi

autoruntest.sh:
Bash:
#!/bin/sh
# con /opt/bin/bash parece que no se lanza en boot
# con /bin/sh no funciona el redireccionamiento a funcion/process substitution
log=/home/telemarch/autorun/autoruntest.log
stdlog=/home/telemarch/autorun/autoruntest_std.log
log(){
	echo "[1] $(date '+%F %T.%3N') $1" >> $log
# otra forma
#	d=$(date +'%Y-%m-%d %H:%M:%S|%N')
#	ms=$(( ${d#*|}/1000000 ))
#	d="${d%|*}.$ms"
#	echo "[2] $d $1" >> $log
# otra más esta con printf
#	timestamp = $(date '+%F %T.%N')
#	printf '%04d-%02d-%02dT%02d:%02d:%02d.%03d $1' \
#			$(date -r "${timestamp%.*}" +"%Y %m %d %H %M %S")\
#			$(( ${timestamp#*.}/1000 )) >> $log
	printf "[4] %.23s" $(date +'%Y-%m-%dT%H:%M:%S.%N') >> $log
	
	echo "" >> $log
}
log "*** Starting autoruntes.sh"
#namedpipe=/home/telemarch/autorun/autoruntest_sh_pipe
#alias ts='/home/telemarch/sbin/ts'
#if [ -p $namedpipe ]; then
#	echo "Named pipe $namedpipe exists. Deleting."
#	rm -f "$namedpipe"
#fi
## create named pipe
#mkfifo $namedpipe
## Start ts writing to a logfile, but pulling its input from our named pipe.
#ts "%F %H:%M:%.S" >> "$log" < "$namedpipe" &
## capture ts's process ID for the wait command.
#ts_pid=$!
## redirect the rest of the stderr and stdout to our named pipe.
#exec > $namedpipe 2>&1
exec > $stdlog 2>&1
#echo "*** Starting autoruntest.sh"

log "PATH=$PATH"
#log "PID of ts: $ts_pid"
#echo "Calling another script subscript.sh"
#/home/telemarch/autorun/subscript.sh &
# echo "subscript.sh done."
log "Running command with stdout output"
ls -la
log "Running wrong command with stderr output"
gfrxls
#echo "Closing output redirection to log file"
## close the stderr and stdout file descriptors.
#exec 1>&- 2>&-
#
## Wait for ts to finish since now that other end of the pipe has closed.
#wait $ts_pid
##delete named pipe when finished
#trap 'rm "$namedpipe"' EXIT
log "*** End of autoruntest.sh"

Więcej przykładowych kodów: d4nirod/QNAP-scripts · GitHub
 
  • Lubię to
Reakcje: qiui