Skip to content

Commit 6522e34

Browse files
committed
added print_status & print_error
1 parent d937668 commit 6522e34

File tree

2 files changed

+72
-54
lines changed

2 files changed

+72
-54
lines changed

config.sh

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
### leave empty for interactive mode
88
LOGIN=
99
PASS=
10-
DEMOACCOUNT=1 # 1 or 0
10+
DEMOACCOUNT= # 1 or 0
1111

1212
### predefine settings for ssh-tunnel
1313
SSH_MIDDLEMAN_SERVER=
@@ -25,18 +25,18 @@ CONTAINER=
2525
### Either 'ibgateway' or 'tws' are suitable
2626
### TWS can be started either as non-GUI Gateway or in classical GUI-Mode
2727

28-
PRODUCT=tws # ibgateway or tws # do not change, actually only tws is supported
29-
INSTANCE=tws # gateway or tws # attention: the tws-output is displayed on the host of ib-container
28+
readonly PRODUCT=tws # ibgateway or tws # do not change, actually only tws is supported
29+
readonly INSTANCE=gateway # gateway or tws # attention: the tws-output is displayed on the host of ib-container
3030

3131
IB_PROGRAM=$PRODUCT-latest-standalone-linux-x64.sh
32-
IB_PATH=https://download2.interactivebrokers.com/installers/$PRODUCT/latest-standalone/$IB_PROGRAM
32+
readonly IB_PATH=https://download2.interactivebrokers.com/installers/$PRODUCT/latest-standalone/$IB_PROGRAM
3333

3434
IBC_VERSION=3.8.5
35-
IBC_PATH=https://github.com/IbcAlpha/IBC/releases/download/${IBC_VERSION}/IBCLinux-${IBC_VERSION}.zip
35+
readonly IBC_PATH=https://github.com/IbcAlpha/IBC/releases/download/${IBC_VERSION}/IBCLinux-${IBC_VERSION}.zip
3636

37-
SIMPLE_MONITOR=https://github.com/ib-ruby/simple-monitor.git
37+
readonly SIMPLE_MONITOR=https://github.com/ib-ruby/simple-monitor.git
3838

39-
## Täglicher Start von Gateway/TWS im crontab-Format (Minute Stunde)a
39+
## Täglicher Start von Gateway/TWS im crontab-Format (Minute Stunde)
4040
## When to start Gateawy/TWS by cron
4141
START_TIME='5 5'
4242

setup.sh

Lines changed: 65 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
export DEBIAN_FRONTEND=noninteractive
2525
source config.sh
2626

27+
2728
if [ -f $logfile ] ; then rm $logfile ; fi
2829
touch $logfile
2930
SILENT=$logfile
@@ -47,20 +48,24 @@ fi
4748
if test -n "${3}"; then
4849
PASS=${3}
4950
elif test -z "$PASS" ; then
50-
read -p "Interactive Brokers Account Password: " PASS
51+
read -ps "Interactive Brokers Account Password: " PASS
5152
fi
52-
read -p "Demoaccount? [y|N]:" answer
53-
if [ ! $answer = 'y' ] && [ ! $answer = 'j' ] ; then
54-
DEMOACCOUNT=0
55-
else
56-
DEMOACCOUNT=1
53+
54+
if test -z $DEMOACCOUNT ; then
55+
read -p "Demoaccount? [y|N]:"
56+
if [ ! $REPLY = 'y' ] && [ ! $REPLY = 'j' ] ; then
57+
DEMOACCOUNT=0
58+
else
59+
DEMOACCOUNT=1
60+
fi
5761
fi
5862

5963
if test -n "${5}" ; then
6064
SSH_MIDDLEMAN_SERVER=${5}
6165
elif test -z "$SSH_MIDDLEMAN_SERVER" ; then
6266
read -p "Bezeichnung oder IP des Endpunkts des SSH-Tunnels [return=keinen Tunnel verwenden]: " SSH_MIDDLEMAN_SERVER
6367
fi
68+
6469
if test -z $SSH_MIDDLEMAN_SERVER ; then
6570
SETUP_AUTOSSH=0
6671
else
@@ -92,8 +97,9 @@ fi
9297
echo "-------------------------"
9398
echo "Containter: $CONTAINER"
9499
echo "Login: $LOGIN"
95-
echo "Password: **** " # $PASS"
100+
echo "Password: **** " # $PASS"
96101
echo "Demoaccount: `if [ $DEMOACCOUNT -eq 1 ] ; then echo "ja" ; else echo "nein"; fi ` "
102+
echo "Gateway/TWS: `if [ "$PRODUCT" = tws ] ; then echo "$INSTANCE" ; else echo "Gateway" ; fi `"
97103
if [ $SETUP_AUTOSSH -eq 1 ] ; then
98104
echo "PORT: $SSH_PORT_NUMBER"
99105
echo "Backport: $SSH_MONITORING_PORT_NUMBER"
@@ -108,6 +114,18 @@ if [[ -n $cont || $cont == 'n' ]] ; then
108114
exit 255
109115
fi
110116

117+
118+
119+
print_status(){
120+
echo "[+] $*"
121+
}
122+
print_error() {
123+
echo "[!] $*"
124+
}
125+
126+
127+
128+
111129
check_lxd(){
112130
#LXD vereint die Vorteile virtueller Rechner (Xen et.\,al.) und die Ressourceneffizienz von Containern (aka Docker).
113131
#Es ist Open-Source und gut dokumentiert. Ferner gibt eine API für eine Steuerung durch Skripte.
@@ -122,29 +140,29 @@ check_lxd(){
122140
## Wir testen die Version
123141

124142
if [ `snap list | grep -c lxd ` -eq 1 ] || [ `systemctl is-active lxd.service` = "active" ] ; then
125-
echo "LXD ist installiert und gestartet"
143+
print_status "LXD ist installiert und gestartet"
126144
else
127-
echo "LXD ist nicht installiert oder nicht aktiv"
128-
echo "Abbruch!"
145+
print_error "LXD ist nicht installiert oder nicht aktiv"
146+
print_error "Abbruch!"
129147
exit 99
130148
fi
131149
lxd_version=`lxd --version | awk -F'.' '{ print $1 }'`
132150
lxd_subversion=`lxd --version | awk -F'.' '{ print $2 }'`
133151
if [ $lxd_version -lt $MIN_LXD_VERSION ] || [ $lxd_subversion -lt $MIN_LXD_SUBVERSION ] ; then
134-
echo "LXD-Version nicht geeignet. "
135-
echo "Mindestens 4.11 ist erforderlich. "
136-
echo "`lxd --version` gefunden "
152+
print_error "LXD-Version nicht geeignet. "
153+
print_error "Mindestens 4.11 ist erforderlich. "
154+
print_error "`lxd --version` gefunden "
137155
return 1
138156
else
139-
echo "LXD version `lxd --version` installiert --- OK"
157+
print_status "LXD version `lxd --version` installiert --- OK"
140158
return 0
141159
fi
142160
}
143161

144162
prepare_lxd(){
145163
## Ist Ubuntu-Minimal bereits als Remote angelegt?
146164
if lxc remote list | grep -q ubuntu-minimal ; then
147-
echo "Ubuntu-minimal ist bereits als remote gelistet"
165+
print_status "Ubuntu-minimal ist bereits als remote gelistet"
148166
else
149167
lxc remote add --protocol simplestreams ubuntu-minimal https://cloud-images.ubuntu.com/minimal/releases/
150168
fi
@@ -153,16 +171,16 @@ prepare_lxd(){
153171
#
154172
#Aufsetzen für X11-Nutzung
155173

156-
if [ -f lxdguiprofile.txt ] ; then
157-
echo "GUI-Profilidatei ist bereits heruntergeladen"
174+
if test -f lxdguiprofile.txt ; then
175+
print_status "GUI-Profilidatei ist bereits heruntergeladen"
158176
else
159177
wget https://blog.simos.info/wp-content/uploads/2018/06/lxdguiprofile.txt -o lxdguiprofile.txt
160178
fi
161-
if lxc profile list | grep -q gui ; then
162-
echo "GUI Profil ist bereits angelegt"
179+
if lxc profile show gui 1>/dev/null; then
180+
print_status "GUI Profil ist bereits angelegt"
163181
else
164182
lxc profile create gui
165-
cat lxdguiprofile.txt | lxc profile edit gui
183+
lxc profile edit gui < lxdguiprofile.txt
166184
# alias anlegen
167185
lxc alias add ubuntu 'exec @ARGS@ -- sudo --login --user ubuntu'
168186
fi
@@ -176,7 +194,7 @@ launch_image(){
176194
return 1
177195
else
178196
lxc launch --profile default --profile gui ubuntu-minimal:f $CONTAINER
179-
echo "$LXD_DELAY Sekunden warten, bis das Netzwerk betriebsbereit ist"
197+
print_status "$LXD_DELAY Sekunden warten, bis das Netzwerk betriebsbereit ist"
180198
sleep $LXD_DELAY
181199
return 0
182200
fi
@@ -187,7 +205,7 @@ download_ib_software(){
187205
if [ -f $IB_PROGRAM ] ; then
188206
:
189207
else
190-
echo "Hole $PRODUCT vom offiziellen Server"
208+
print_status "Hole $PRODUCT vom offiziellen Server"
191209
wget $IB_PATH
192210
chmod a+x $IB_PROGRAM
193211
fi
@@ -201,7 +219,7 @@ check_container(){
201219
if lxc list | grep -q $CONTAINER && [ `lxc list | grep $CONTAINER | awk -F '|' '{ print $3 }' ` = "RUNNING" ] && [ `lxc list | grep $CONTAINER | awk -F'|' '{ if($4 ~ /[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/ ) {print 1} else {print 0}}'` -eq 1 ] ; then
202220
return 0
203221
else
204-
echo 'Networking is not active'
222+
print_error 'Networking is not active'
205223
return 1
206224
fi
207225
}
@@ -213,26 +231,26 @@ init_container(){
213231
## TWS / Gateway installieren
214232
local access_container="lxc exec $CONTAINER -- sudo --login --user ubuntu --"
215233
if [ `$access_container ls /home/ubuntu | wc -l ` -eq 0 ] ; then
216-
echo "Home-Directory des Containers ist leer"
217-
echo "Installiere $PRODUCT"
218-
echo "warte $LXD_DELAY Sekunden bis sich der Container initialisiert hat"
234+
print_status "Home-Directory des Containers ist leer"
235+
print_status "Installiere $PRODUCT"
236+
print_status "warte $LXD_DELAY Sekunden bis sich der Container initialisiert hat"
219237
sleep $LXD_DELAY
220238

221-
echo "Installiere Java Das dauert einige Minuten ..."
239+
print_status "Installiere Java Das dauert einige Minuten ..."
222240
$access_container sudo apt-get update >> $SILENT
223241
$access_container sudo apt-get install -y openjdk-14-jre >> $SILENT
224242

225243
# testen, ob java installiert ist:
226244
# $access_container dpkg -s openjdk-14-jre | grep -c installed
227-
echo "Falls java an dieser Stelle nicht installiert wurde ... wir holen dies später nach!"
245+
print_error "Falls java an dieser Stelle nicht installiert wurde ... wir holen dies später nach!"
228246
lxc file push $IB_PROGRAM $CONTAINER/home/ubuntu/
229-
echo "Installiere ${PRODUCT}. Das dauert einige Minuten ..."
247+
print_status "Installiere ${PRODUCT}. Das dauert einige Minuten ..."
230248
#$access_container DISPLAY= $IB_PROGRAM <<<""$'\n'
231249
lxc exec --user 1000 --group 1000 --env "DISPLAY=" $CONTAINER -- bash --login /home/ubuntu/$IB_PROGRAM <<<""$'\n' >> $SILENT
232250
# >> $SILENT
233251
return 0
234252
else
235-
echo "Container ist nicht leer. Konfiguration übersprungen!"
253+
print_error "Container ist nicht leer. Konfiguration übersprungen!"
236254
return 1
237255
fi
238256
}
@@ -246,16 +264,16 @@ apply_ibc(){
246264
local ibc_file=IBCLinux-$IBC_VERSION.zip
247265
local access_container="lxc exec $CONTAINER -- sudo --login --user ubuntu -- "
248266
if [ -f $ibc_file ] ; then
249-
echo "IBC-$IBC_VERSION ist bereits lokal vorhanden "
267+
print_status "IBC-$IBC_VERSION ist bereits lokal vorhanden "
250268
else
251-
echo "Hole IBC-Archiv vom GitHub-Server"
269+
print_status "Hole IBC-Archiv vom GitHub-Server"
252270
wget $IBC_PATH >> $SILENT
253271
fi
254272
## Erstelle ibc-Verzeichnis im Container
255273
if [ `$access_container find /home/ubuntu -type d -name ibc | wc -l ` -ne 0 ] ; then
256-
echo "Verzeichnis ibc bereits vorhanden. "
257-
echo "Installation von IBC wird übersprungen."
258-
echo "Es wird keine crontab installiert."
274+
print_error "Verzeichnis ibc bereits vorhanden. "
275+
print_error "Installation von IBC wird übersprungen."
276+
print_error "Es wird keine crontab installiert."
259277
else
260278
$access_container sudo apt-get install -y openjdk-14-jre >> $SILENT
261279
$access_container mkdir ibc
@@ -308,7 +326,7 @@ install_simple_monitor(){
308326
# Simple-Monitor installieren
309327
local access_container="lxc exec $CONTAINER -- sudo --login --user ubuntu --"
310328
if [ `$access_container find /home/ubuntu -type d -name simple-monitor | wc -l ` -ne 0 ] ; then
311-
echo "simple monitor ist bereits angelegt"
329+
print_status "simple monitor ist bereits angelegt"
312330
return 1
313331
else
314332
{
@@ -372,7 +390,7 @@ setup_reverse_tunnel(){
372390
echo " ++++++++++++++++++++++++++++++++++++++++++++++ "
373391
read -p "nach <CR> gehts weiter" read
374392

375-
echo " Installiere lokal abgelegte Zertifikate im Container"
393+
print_status " Installiere lokal abgelegte Zertifikate im Container"
376394
# install certificates to access the container via ssh and reverse ssh
377395
touch certificates.sh
378396
for certificate in *.pub
@@ -381,7 +399,7 @@ setup_reverse_tunnel(){
381399
if [ "$certificate" = dummy.pub ] || [ "$certificate" = $CONTAINER.pub ] ; then
382400
:
383401
else
384-
echo "installiere $certificate "
402+
print_status "installiere $certificate "
385403
cat $certificate >> certificates.sh
386404
fi
387405
done
@@ -412,16 +430,16 @@ setup_reverse_tunnel(){
412430
lxc file push reverse-tunnel ${CONTAINER}/${SSH_TUNNEL_LOCATION}
413431
rm reverse-tunnel
414432

415-
echo "SSH-Tunnel wird installiert."
433+
print_status "SSH-Tunnel wird installiert."
416434

417435
lxc exec $CONTAINER -- /$SSH_TUNNEL_LOCATION
418436
sleep 3
419437
fi
420438
check_tunnel
421439
if [ $? -eq 0 ] ; then
422-
echo "Revese Tunnel ist gestartet"
440+
print_status "Revese Tunnel ist gestartet"
423441
else
424-
echo "Restart des Containers erforderlich für den Start des Reverse SSH Tunnels"
442+
print_error "Restart des Containers erforderlich für den Start des Reverse SSH Tunnels"
425443
fi
426444
}
427445

@@ -445,23 +463,23 @@ launch_image
445463
download_ib_software
446464

447465
init_container
448-
echo " +++++++++++++++++++++++++++++++++++++++ "
449-
echo " Container ${CONTAINER} ist angelegt "
466+
print_status " +++++++++++++++++++++++++++++++++++++++ "
467+
print_status " Container ${CONTAINER} ist angelegt "
450468

451469
if [ $SETUP_AUTOSSH -eq 1 ] ; then
452470
setup_reverse_tunnel
453-
echo " Reverse Tunnel ist aufgebaut "
471+
print_status " Reverse Tunnel ist aufgebaut "
454472
fi
455473

456474

457475

458-
echo "Installiere IBC "
476+
print_status "Installiere IBC "
459477
apply_ibc
460478

461-
echo "Installiere simple-monitor "
479+
print_status "Installiere simple-monitor "
462480
install_simple_monitor
463481

464-
export DEBIAN_FRONTEND=newt
465482
run_ats
466483

484+
export DEBIAN_FRONTEND=newt
467485

0 commit comments

Comments
 (0)