• Hey Guest, we're evolving the future of TeaSpeak.
    You're invited to join the discussion here!

Server [Unofficial] Autoinstall Script für TeaSpeak + Download

essem

Active member
Also erstmal von der Grund-idee her ganz Gut, aber ohne Kritik kommt mir das nicht davon.

1. ich würde generell nie irgendeiner datei die Rechte 777 geben wie in der Readme steht.
2. Warum als binary? Github nutzt man eher für Source-code. Auf diese weise kann jeder sehen ob schädliche software vorhanden ist bzw. beim entwickeln helfen.
3. Wäre nett noch anzugeben was das Script alles macht/installiert.

Sorry, aber als Informatiker muss ich sowas kritisch sehen :geek:
~essem
 

revoxhost

Active member
Danke erstmal für dein netten Kommentar ^^ xDD

Klar werde den Sourcecode sehrwarscheinlich sowieso offenlegen ^^ da es mit dem Updatemanager des Scriptes immoment sowieso nicht klappt xD

Kümmere mich aber heute mittag drum xD
 

DieNrSieben

New member
Hallo,

erstmal Danke für deine Arbeit. Leider habe ich ein paar Kritikpunkte bzw. Frage:
1.) Warum lädst du in Zeile 95 die Source von Teaspeak nicht aus dem Repo sondern von einem Dritten Server?
2.) Dein Update-Mechanismus: Warum Fragst du ein closed source PHP Script für die Versionsnummer ab? (Du könntest z.B. ein Version file in das Git Repo legen und dann die Raw Version mit curl laden und warum lädst du das bash script nicht aus dem Git Repo?) (Auch sagt das Script, dass es nach Updates sucht wenn man es ausgeschaltet hat.)
3.) Das Script lädt in Zeile 28 schon curl aber du machst erst in Zeile 72 ein Apt-get update. (Evt. auch wget installieren und ein -y anhängen) (Ich würde auch alle Pakete gesammelt installieren also curl, wget und ffmpeg)
4.) Bitte baue eine Abfrage ein, ob man überhaupt ein apt-get upgrade -y machen möchte.
5.) Warum hast du die aktuelle Teaspeak Version hardcoded? (Dies lässt sich ganz einfach mit wget https://repo.teaspeak.de/server/linux/x64/TeaSpeak-$(curl -SL https://repo.teaspeak.de/latest).tar.gz" -O "teaspeak.tar.gz" lösen)
6.) Ich würde den installpath in eine variable stecken, damit der User dies im Bedarfsfall ändern kann (Zudem lassen sich damit Fehlinformationen vermeiden. (Path in Zeile 63 und der "Reale" installpath))

Aller Anfang ist Schwer :)

B rgds
Phil

PS: Warum hast du so viele Sleeps drin?
 

revoxhost

Active member
Danke für deine Antwort :)

Das Script soll jetzt nichts perfektes werden es ist einfach nur für User die es schnell mal nen teaspeak server haben wollen ^^

Ich fange Grade erstmal damit an bash Scripte zu schreiben daher lerne ich ja immer noch dazu :)

Danke ttd für deine Informationen ich wette sie mir zu Herzen nehmen :)
 

revoxhost

Active member
Hallo,

erstmal Danke für deine Arbeit. Leider habe ich ein paar Kritikpunkte bzw. Frage:
1.) Warum lädst du in Zeile 95 die Source von Teaspeak nicht aus dem Repo sondern von einem Dritten Server?
2.) Dein Update-Mechanismus: Warum Fragst du ein closed source PHP Script für die Versionsnummer ab? (Du könntest z.B. ein Version file in das Git Repo legen und dann die Raw Version mit curl laden und warum lädst du das bash script nicht aus dem Git Repo?) (Auch sagt das Script, dass es nach Updates sucht wenn man es ausgeschaltet hat.)
3.) Das Script lädt in Zeile 28 schon curl aber du machst erst in Zeile 72 ein Apt-get update. (Evt. auch wget installieren und ein -y anhängen) (Ich würde auch alle Pakete gesammelt installieren also curl, wget und ffmpeg)
4.) Bitte baue eine Abfrage ein, ob man überhaupt ein apt-get upgrade -y machen möchte.
5.) Warum hast du die aktuelle Teaspeak Version hardcoded? (Dies lässt sich ganz einfach mit wget https://repo.teaspeak.de/server/linux/x64/TeaSpeak-$(curl -SL https://repo.teaspeak.de/latest).tar.gz" -O "teaspeak.tar.gz" lösen)
6.) Ich würde den installpath in eine variable stecken, damit der User dies im Bedarfsfall ändern kann (Zudem lassen sich damit Fehlinformationen vermeiden. (Path in Zeile 63 und der "Reale" installpath))

Aller Anfang ist Schwer :)

B rgds
Phil

PS: Warum hast du so viele Sleeps drin?

Es muss ja nicht von jedem User genutzt werden ... das script ist einfach nur dazu da wenn es mal schnell gehen muss.

Großartig wird nichts mehr daran verändert da das Gröbste schon drin ist.

Auch mit der Abfrage ob man Update machen möchte oder nicht baue ich nicht mehr mit ein denn es ist wichtig auf einem Server immer die Aktuellsten Updates zu haben.

*Closed*
 

Bluscream

Well-known member
mein aktuelles script

update.sh
Bash:
#!/bin/bash
echo "# installing requirements"
apt update -y
apt dist-upgrade -y
apt install sudo -y
sudo apt install ffmpeg youtube-dl curl wget screen tar gzip -y
pkill TeaSpeak
chmod +x supdate.sh
su - teaspeak -c ". supdate.sh"
# su teaspeak -c "./teastart_autorestart.sh start"
supdate.sh
Bash:
#!/bin/bash
echo "# getting latest version"
version=$(curl -k https://repo.teaspeak.de/latest)
echo "# newest version is ${version}"
requesturl="https://repo.teaspeak.de/server/linux/x64/TeaSpeak-${version}.tar.gz"
echo "# requesting from ${requesturl}"
wget --no-check-certificate "$requesturl"
filename="TeaSpeak-${version}.tar.gz"
echo "# backing up old files"
cp config.yml config.pre_update.yml
cp TeaData.sqlite TeaData.pre_update.sqlite
echo "# unzip $filename"
tar -xzf ${filename}
rm ${filename}
./teastart_minimal.sh
echo "# making scripts executable"
chmod +x *.sh
./teastart_autorestart.sh start
echo "# now updated to ${version}"
 

essem

Active member
mein aktuelles script

update.sh
Bash:
#!/bin/bash
echo "# installing requirements"
apt update -y
apt dist-upgrade -y
apt install sudo -y
sudo apt install ffmpeg youtube-dl curl wget screen tar gzip -y
pkill TeaSpeak
chmod +x supdate.sh
su - teaspeak -c ". supdate.sh"
# su teaspeak -c "./teastart_autorestart.sh start"
supdate.sh
Bash:
#!/bin/bash
echo "# getting latest version"
version=$(curl -k https://repo.teaspeak.de/latest)
echo "# newest version is ${version}"
requesturl="https://repo.teaspeak.de/server/linux/x64/TeaSpeak-${version}.tar.gz"
echo "# requesting from ${requesturl}"
wget --no-check-certificate "$requesturl"
filename="TeaSpeak-${version}.tar.gz"
echo "# backing up old files"
cp config.yml config.pre_update.yml
cp TeaData.sqlite TeaData.pre_update.sqlite
echo "# unzip $filename"
tar -xzf ${filename}
rm ${filename}
./teastart_minimal.sh
echo "# making scripts executable"
chmod +x *.sh
./teastart_autorestart.sh start
echo "# now updated to ${version}"
die backup funktionalität gefällt mir. was dagegen wenn ich die bei meinem script hinzufüg? kannst auch ne pullrequest machen wenn du willst ^^
 

Bluscream

Well-known member
Hab auch irgendwann mal ne python version angefangen
Python:
import sys, tarfile, ts3
from subprocess import Popen
from urllib import request
from os import environ, path
"""
from configparser import ConfigParser
ini = path.join("config.ini")
cfg = ConfigParser()
cfg.optionxform = str
"""
def main():
    if sys.version_info < (3,):
        sys.stderr.write("Python < 3 is not supported!\n")
        sys.exit(1)
    url = "https://repo.teaspeak.de/latest"
    response = request.urlopen(url)
    print('Requested {}: {} ({})'.format(url, response.status, response.reason))
    latest = response.read().decode('utf-8').strip()
    print("Got latest version:", latest)
    scriptdir = path.dirname(path.realpath(__file__))
    filename = "TeaSpeak-{}".format(latest)
    zipname = "{}.tar.gz".format(filename)
    url = "https://repo.teaspeak.de/server/linux/x64/{}".format(zipname)
    dlpath = path.join(scriptdir, zipname)
    print("Downloading from:", url)
    print("to:", dlpath)
    response = request.urlretrieve(url, dlpath)
    # print(response[1])
    # print('Downloaded {}: {} ({})'.format(url, response[1].status, response[1].reason))
    tar = tarfile.open(dlpath)
    _tmp = path.join(scriptdir, filename)
    tar.extractall(_tmp)
    tar.close()
    print("Extracted", zipname, "to", _tmp)
    # Popen(["fswebcam", "image.jpg"])
    password = environ["TS3_QUERY_PASS"]
    """
    if path.isfile(self.ini): self.cfg.read(self.ini)
    else:
        self.cfg['general'] = {
        }
        with open(self.ini, 'w') as configfile:
            self.cfg.write(configfile)
    """


if __name__ == '__main__':
    main()
 

revoxhost

Active member
Die Repo wird weiterhin auf meinem Server umgeschrieben ich werde keine externen links einfügen

Mfg
 

WolverinDEV

TeaSpeak Team
Staff member
Administrator
Öhm,
Ich weiß zwar nicht wann du dies geändert hast, aber dann kann ich dies leider nicht mehr als offizieles Tutorial/Installer script gelten lassen.
 

revoxhost

Active member
Dies steht in dem Script schon seit Erstellung drin aber ist nicht schlimm mein Script wurde ja sowieso schon schlecht gewertet ;)
 

WolverinDEV

TeaSpeak Team
Staff member
Administrator
Hubs okey? Im sorry war ich wohl am schlafen.
Und nur weil es für dein einen als schlecht angesehen wird muss das nicht für alle gelten :)