我是linux的初学者用户,也是ssh和隧道的新手.
无论如何,我的目标是在后台维护一个ssh隧道.
为了做到这一点,我编写了以下批处理,然后我将其添加到crontab中(批处理在工作日期间每隔5分钟自动处理一次,从早上8点到晚上9点).我在stackoverflow中的其他一些线程中读到,应该使用autossh,这将确保通过循环检查确保ssh始终正常.我也是....
#!/bin/bash
LOGFILE="/root/Tunnel/logBatchRestart.log"
NOW="$(date +%d/%m/%Y' - '%H:%M)" # date & time of log
if ! ps ax | grep ssh | grep tunnelToto &> /dev/null
then
echo "[$NOW] ssh tunnel not running : restarting it" >> $LOGFILE
autossh -f -N -L pppp:tunnelToto:nnnnn nom-prenom@193.xxx.yyy.zzz -p qqqq
if ! ps ax | grep ssh | grep toto &> /dev/null
then
echo "[$NOW] failed starting tunnel" >> $LOGFILE
else
echo "[$NOW] restart successfull" >> $LOGFILE
fi
fi
Run Code Online (Sandbox Code Playgroud)
我的问题是有时隧道停止工作,虽然每件事看起来都没问题(ps ax | grep …
我有一个bash脚本,一个用双引号括起来的参数,它在给定的边界内创建一个map的形状文件,例如
$ export_map "0 0 100 100"
Run Code Online (Sandbox Code Playgroud)
在脚本中,有两个select语句:
select ENCODING in UTF8 WIN1252 WIN1255 ISO-8859-8;
...
select NAV_SELECT in Included Excluded;
Run Code Online (Sandbox Code Playgroud)
当然,这两个语句要求输入输入一个数字作为输入.这可以通过将数字(后跟换行符)连接到脚本来绕过.
为了节省时间,我希望有一个脚本可以创建8个地图 - 每个组合ENCODING(4个选项)和NAV_SELECT(2个选项).
我已经将另一个bash脚本写入create_map服务器作为包装器:
#!/bin/bash
for nav in 1 2 3 4;
do
for enc in 1 2;
do
printf "$nav\n$enc\n" | /bin/bash -c "./export_map.sh \"0 0 100 100\""
done
done
Run Code Online (Sandbox Code Playgroud)
**这有效(谢谢,Brian!),但我找不到"0 0 100 100"从外部脚本外部传递数字参数的方法.**
基本上,我正在寻找在双引号内接受包装器bash脚本的参数的方法,并将它 - 用双引号 - 传递给内部脚本.
澄清:
export_map是主要的脚本,从create_map8次调用.
有任何想法吗? …