Danke für die Linux Version! - 2 kleine Fragen

Danke für die Linux Version! - 2 kleine Fragen

Postby Muckel86 » 15.05.2014, 14:44

Hallo zusammen,
erstmal vielen Dank für das ganze wsusoffline Projekt und auch das es unter Linux nutzbar ist!

Habe es wie beschrieben unter meinem home Verzeichnis eingerichtet und wenn ich es direkt starte (~/wsus/sh/DownloadUpdates.sh ), funktioniert es auch :)

Nun dachte ich mir, dass ich mir einen Link/Verknüpfung in mein "bin" Verzeichnis legen könnte, damit ich es wie meine eigenen kleinen Scripte überall im Terminal aufrufen könnte. Kenne dafür nur zwei Arten, symbolische Verknüpfung oder den Harten Link, doch beides funktioniert nicht:
Code: Select all
ln -s -i /home/tobias/wsus/sh/DownloadUpdates.sh /home/tobias/bin/wsus.sh
ln -i /home/tobias/wsus/sh/DownloadUpdates.sh /home/tobias/bin/wsus-2.sh

Auch das ich die Datei(en) ausfürbar mache und auch noch chmod 777 setzte, klappt es nicht, wie dieser Auszug zeigt:
Code: Select all
tobias@tobias-netbook:~/bin$ ln -s -i /home/tobias/wsus/sh/DownloadUpdates.sh /home/tobias/bin/wsus.sh
tobias@tobias-netbook:~/bin$ ln -i /home/tobias/wsus/sh/DownloadUpdates.sh /home/tobias/bin/wsus-2.sh
tobias@tobias-netbook:~/bin$ chmod +x wsus.sh
tobias@tobias-netbook:~/bin$ chmod +x wsus-2.sh
tobias@tobias-netbook:~/bin$ chmod 777 wsus.sh
tobias@tobias-netbook:~/bin$ chmod 777 wsus-2.sh
tobias@tobias-netbook:~/bin$ ls -l | grep wsus
-rwxrwxrwx 2 tobias tobias 32506 Mai  5 07:50 wsus-2.sh
lrwxrwxrwx 1 tobias tobias    39 Mai 15 15:30 wsus.sh -> /home/tobias/wsus/sh/DownloadUpdates.sh
tobias@tobias-netbook:~/bin$


Auch bei meinem ersten Versuch ohne das ausführbar machen und ohne chmod 777 und bei den 2 folgenden Versuchen mit jeweiles nur einem der beiden und auch mit nur einem "link", bekomme ich immer folgende Meldung:
Code: Select all
tobias@tobias-netbook:~/bin$ ./wsus.sh
./wsus.sh: Zeile 36: ./commonparts.inc: Datei oder Verzeichnis nicht gefunden
commonparts.sh fehlt


Mein Verzeichnis "bin" ( ~/bin/ ) habe ich der PATH-Variable hinzugefügt.
Falls es zur Lösung beiträgt: benutze die aktuelle Ubuntu Version Trusty Tahr.

Hoffe ihr könnt mir dabei helfen!

2. Frage
Zuvor habe ich nur Windows benutzt, musste aber dauerhaft Umsteigen, da ich nur WinXP hätte, doch das nur am Rande. Daher habe ich WSUSoffline bisher nur über die *.exe ausgeführt. Habe beides abgespeichert. Also einmal wie man es runterlädt und einmal über die USB-export Funktion.

Unter Windows konnte ich so die älteren Downloads erhalten und das Script einfach wieder starten, egal von welchem Windows-System aus, da ich es auf einer externen Festplatte gespeichert habe.

Muss ich unter Linux nun einmal alles wieder neu herunterladen oder kann ich die sh/DownloadUpdates.sh aus dem "alten" ausführen? (Natürlich nach dem ich die neuste Version entpackt habe.



Vielen Dank für Eure hilfe!
Muckel86
 

Re: Danke für die Linux Version! - 2 kleine Fragen

Postby aker » 15.05.2014, 15:57

Das liegt daran, dass die Skripts die relativen Pfadangaben . und .. verwenden. Ein Link kann dies nicht abbilden. Es müssen also die richtigen Skirpts aufgerufen werden.

Viele Grüße
Wer Rechtschreibfehler findet, darf sie behalten oder an den Meistbietenden versteigern. / Everybody finding a misspelling is allowed to sell it.
aker
aker
 
Posts: 3339
Joined: 02.03.2011, 15:32
Location: %SystemRoot%\System32\Boot\winload.efi

Re: Danke für die Linux Version! - 2 kleine Fragen

Postby hhullen » 16.05.2014, 11:15

Muckel86 wrote:Hallo zusammen,
erstmal vielen Dank für das ganze wsusoffline Projekt und auch das es unter Linux nutzbar ist!

Habe es wie beschrieben unter meinem home Verzeichnis eingerichtet und wenn ich es direkt starte (~/wsus/sh/DownloadUpdates.sh ), funktioniert es auch :)

Nun dachte ich mir, dass ich mir einen Link/Verknüpfung in mein "bin" Verzeichnis legen könnte, damit ich es wie meine eigenen kleinen Scripte überall im Terminal aufrufen könnte. Kenne dafür nur zwei Arten, symbolische Verknüpfung oder den Harten Link, doch beides funktioniert nicht:
Code: Select all
ln -s -i /home/tobias/wsus/sh/DownloadUpdates.sh /home/tobias/bin/wsus.sh
ln -i /home/tobias/wsus/sh/DownloadUpdates.sh /home/tobias/bin/wsus-2.sh



Ergänzend zur Antwort von "aker": Bau Dir eine Mini-Skript und pack es (ausführbar) nach "/home/tobias/bin":

(Kern)

#! /bin/bash
cd ~/wsus/sh
bash DownloadUpdates.sh

Muckel86 wrote:2. Frage
Zuvor habe ich nur Windows benutzt, musste aber dauerhaft Umsteigen, da ich nur WinXP hätte, doch das nur am Rande. Daher habe ich WSUSoffline bisher nur über die *.exe ausgeführt. Habe beides abgespeichert. Also einmal wie man es runterlädt und einmal über die USB-export Funktion.

Unter Windows konnte ich so die älteren Downloads erhalten und das Script einfach wieder starten, egal von welchem Windows-System aus, da ich es auf einer externen Festplatte gespeichert habe.

Muss ich unter Linux nun einmal alles wieder neu herunterladen oder kann ich die sh/DownloadUpdates.sh aus dem "alten" ausführen? (Natürlich nach dem ich die neuste Version entpackt habe.

Vielen Dank für Eure hilfe!


Einfach drüberkopieren;
ich pflege so etwas mit dem "midnight commander" zu machen, der aber seit einiger Zeit bei Ubuntu nicht mehr automatisch mitinstalliert wird. Kern bei der Kopiererei: pures Überschreiben ist nicht sinnvoll (manchmal sogar falsch); "update" ist ok.

Betrifft u.a. das Verzeichnis "sh": da sollte nicht der Altbestand kopiert werden.
Viele Grüsse
Helmut
hhullen
 
Posts: 100
Joined: 23.04.2012, 10:43

Re: Danke für die Linux Version! - 2 kleine Fragen

Postby hbuhrmester » 11.07.2014, 08:17

Muckel86 wrote:Habe es wie beschrieben unter meinem home Verzeichnis eingerichtet und wenn ich es direkt starte (~/wsus/sh/DownloadUpdates.sh ), funktioniert es auch :)

Nun dachte ich mir, dass ich mir einen Link/Verknüpfung in mein "bin" Verzeichnis legen könnte, damit ich es wie meine eigenen kleinen Scripte überall im Terminal aufrufen könnte...

Auch bei meinem ersten Versuch ohne das ausführbar machen und ohne chmod 777 und bei den 2 folgenden Versuchen mit jeweiles nur einem der beiden und auch mit nur einem "link", bekomme ich immer folgende Meldung:
Code: Select all
tobias@tobias-netbook:~/bin$ ./wsus.sh
./wsus.sh: Zeile 36: ./commonparts.inc: Datei oder Verzeichnis nicht gefunden
commonparts.sh fehlt



Man kann einen kleinen Patch in die Datei DownloadUpdates.sh einfügen, damit das Skript immer im richtigen Verzeichnis ausgeführt wird.

Das Startskript MediathekView__Linux.sh für das Programm MediathekView verwendet dazu die folgenden Anweisungen (mit einigen zusätzlichen Ausgaben zur Kontrolle):

Code: Select all
#!/bin/bash

echo "Name des Binaries: " "$0"
echo "Kanonischer Name:  "  $(readlink -f "$0")

dir=$(dirname $(readlink -f "$0"))
cd "$dir"

echo "Arbeitsverzeichnis:" $(pwd) '\n'


Damit wird das Skript immer im eigenen Verzeichnis ausgeführt. Man kann einen symbolischen Link in ein anderes Verzeichnis legen, um es von dort aus leichter aufrufen zu können. (Mit "hard links" wird das aber nicht funktionieren.)

Tatsächlich sind diese Anweisungen im Skript DownloadUpdates.sh bereits enthalten; sie stehen in den Zeilen 349 bis 351, bezogen auf die Version 9.2.1. Aber damit sie funktionieren, sollten sie ganz am Anfang der Datei stehen, direkt unterhalb des Headers.

Die Zeile 36 kann dann vereinfacht werden von:

Code: Select all
source $(dirname $0)/commonparts.inc || {


in:

Code: Select all
source commonparts.inc || {


Zusammenfassung
Die Zeilen 1 bis 43 des Skripts sind dann:

Code: Select all
#!/bin/bash

#########################################################################
###         WSUS Offline Update Downloader for Linux systems          ###
###                              v. 9.2.1                             ###
###                                                                   ###
###   http://www.wsusoffline.net/                                     ###
###   Authors: Tobias Breitling, Stefan Joehnke, Walter Schiessberg   ###
###   maintained by H. Hullen                                         ###
#########################################################################
# Exit codes:
# 0 - success
# 1 - file error
# 2 - connection error

#set working directory
cd $( dirname $(readlink -f "$0") )
PATH_PWD="$( pwd )"

Prog=$(basename $0)
case $BASH in
    *bin/bash)
    ;;
    *)
    echo "
Please start this program with

        bash $Prog
"
    exit 1
    ;;
esac

debug=0
test $debug -eq 1 && set -x
export SHELLOPTS

export TERM=xterm

source commonparts.inc || {
    echo commonparts.sh fehlt
    exit 1
    }



Viele Grüße,
Hartmut
hbuhrmester
 
Posts: 378
Joined: 11.10.2013, 20:59

Re: Danke für die Linux Version! - 2 kleine Fragen

Postby hhullen » 27.07.2014, 13:27

hbuhrmester wrote:
Muckel86 wrote:
[...]

Tatsächlich sind diese Anweisungen im Skript DownloadUpdates.sh bereits enthalten; sie stehen in den Zeilen 349 bis 351, bezogen auf die Version 9.2.1. Aber damit sie funktionieren, sollten sie ganz am Anfang der Datei stehen, direkt unterhalb des Headers.

Die Zeile 36 kann dann vereinfacht werden von:

Code: Select all
source $(dirname $0)/commonparts.inc || {


in:

Code: Select all
source commonparts.inc || {


[...]
Hartmut


Danke - für "DownloadUpdates.sh" und für "CreateISOImage.sh" übernommen. Dürfte in einem der nächsten Updates erscheinen.

Es geht doch nichts über das Arbeiten mit einem über Jahre gewachsenen ellenlangen Skript ...
Viele Grüsse
Helmut
hhullen
 
Posts: 100
Joined: 23.04.2012, 10:43


Return to Linux

Who is online

Users browsing this forum: No registered users and 3 guests