staging.inyokaproject.org

Script führt nachdem ich Root rechte habe nichts mehr aus.

Status: Ungelöst | Ubuntu-Version: Ubuntu 18.10 (Cosmic Cuttlefish)
Antworten |

Jowie

(Themenstarter)

Anmeldungsdatum:
30. April 2019

Beiträge: 16

Habe ich nun versucht, hat jedoch nicht funktioniert...

1
2
#!/bin/sh
gnome-terminal -e 'bash -c "sudo -i; hdparm -I /dev/sda; echo -n mem > /sys/power/state;"'

Dabei führt er nur den ersten Befehl aus. Die anderen Befehle macht er nicht.

fleet_street

Top-Wikiautor
Avatar von fleet_street

Anmeldungsdatum:
30. August 2016

Beiträge: 1901

Mit sudo -i klappt es nicht (siehe erste Antwort).

Mach doch zwei Skripte daraus. Deine Befehlsabfolge ohne sudo -i in eine Textdatei speichern unter beliebigem_Namen und ausführbar machen (die erwähnte Sicherheitsabfrage am Anfang nicht vergessen):

1
2
3
4
#!/bin/bash
hdparm -I /dev/sda
…
#deine_Befehlsfolge

Dieses kannst du im zweiten Skript dann mit erweiterten Rechten ausführen.

1
2
#!/bin/bash
gnome-terminal -e 'sudo beliebigem_Namen'

Alternativ kannst du auch fleißig vor jedes Kommando ein sudo tippen, wobei das echo schon eine Falle bereit hält. 😮

1
2
#!/bin/sh
gnome-terminal -e 'sh -c "sudo hdparm -I /dev/sda; echo -n mem | sudo tee /sys/power/state"'

Jowie

(Themenstarter)

Anmeldungsdatum:
30. April 2019

Beiträge: 16

Hmm dass könnte funktionieren. Leider habe ich meine USB Sticks Zuhause vergessen...:/ werde dies erst morgen testen können.

Die Alternative vor jeden Befehl ein Sudo zu setzen habe ich schon probiert, hat leider nicht funktioniert.

Also dann sieht das Zweite Script z.B. so aus und muss autorun.sh für die Sicherheitsabfrage heissen. befehlsfolge.sh Script wäre dann meine Befehlsfolge.

1
2
#!/bin/bash
gnome-terminal -e 'sudo ./befehlsfolge.sh'

Gruss

Jowie

Rechnungstore

Anmeldungsdatum:
18. Februar 2011

Beiträge: 157

Wieso soll eigentlich unbedingt alles in eine Zeile? Bezugnehmend auf deinen ursprünglichen Beitrag: Wieso probierst du es nicht einfach so?:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/bin/bash

test $(id -u) -eq 0 || exec sudo "$0" "$@"

hdparm -I /dev/sda
echo -n mem > /sys/power/state
hdparm --user-master u --security-set-pass Medium /dev/sda
hdparm time --user-master u --security-erase Medium /dev/sda
blkdiscard -o 0 /dev/sda
hdparm -I /dev/sda

exit 0

Jowie

(Themenstarter)

Anmeldungsdatum:
30. April 2019

Beiträge: 16

Habe ich nun getestet...ohne Erfolg, es macht dabei gar nichts, nicht mal das Terminal öffnet es.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/bin/bash

test $(id -u) -eq 0 || exec sudo "$0" "$@"

hdparm -I /dev/sda
echo -n mem > /sys/power/state
hdparm --user-master u --security-set-pass Medium /dev/sda
hdparm time --user-master u --security-erase Medium /dev/sda
blkdiscard -o 0 /dev/sda
hdparm -I /dev/sda

exit 0

Wenn ich das Script von Hand probier auszuführen funktioniert es auch nicht...

Dies führt er aus, aber weiter kommt er nicht, wenn ich noch einen weiteren Befehl anfüge.

1
2
#!/bin/sh
gnome-terminal -e 'sh -c "test $(id -u) -eq 0 || exec sudo "$0" "$@""'

Rechnungstore

Anmeldungsdatum:
18. Februar 2011

Beiträge: 157

...nicht mal das Terminal öffnet es.

Wie genau versuchst du es zu starten?

Wenn ich das Script von Hand probier auszuführen funktioniert es auch nicht

Was meinst du genau mit "von Hand"?

Jowie

(Themenstarter)

Anmeldungsdatum:
30. April 2019

Beiträge: 16

Also im Script autorun.sh ist dieses Script, dass das Terminal öffnet, eine Sicherheitsabfrage macht und das andere Script SSD.sh mit sudo ausführen sollte, was aber nicht funktioniert:

1
2
#!/bin/bash
gnome-terminal -e 'sh -c "sudo ./SSD.sh"'

Dies ist das andere Script mit den anderen Befehlen. Die dann mit sudo ausgeführt werden sollten:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/bash

hdparm -I /dev/sda
echo -n mem > /sys/power/state
hdparm --user-master u --security-set-pass Medium /dev/sda
hdparm time --user-master u --security-erase Medium /dev/sda
blkdiscard -o 0 /dev/sda
hdparm -I /dev/sda

exit 0

Ich öffne das Terminal mit diesem Befehl,

1
gnome-terminal -e

habe aber auch schon diesen Befehl probiert:

1
x-terminal-emulator

Hat beides nicht funktioniert. Von Hand meine ich, dass ich das Terminal selbst öffne und dann das Script im Terminal ausführ und dies nicht via Script.

Gruss

Jowie

Rechnungstore

Anmeldungsdatum:
18. Februar 2011

Beiträge: 157

Was genau passiert denn, wenn du folgenden Code

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/bin/bash

test $(id -u) -eq 0 || exec sudo "$0" "$@"

hdparm -I /dev/sda
echo -n mem > /sys/power/state
hdparm --user-master u --security-set-pass Medium /dev/sda
hdparm time --user-master u --security-erase Medium /dev/sda
blkdiscard -o 0 /dev/sda
hdparm -I /dev/sda

exit 0

als wasauchimmer.sh abspeicherst, ausführbar machst

1
chmod +x wasauchimmmer.sh

und auführst?

1
./wasauchimmer.sh

Jowie

(Themenstarter)

Anmeldungsdatum:
30. April 2019

Beiträge: 16

ich denke ich habe das Problem gelöst ☺

Es kam folgende Fehlermeldung dabei heraus: "bad interpreter: No such file or directory"

Dies habe ich mit diesem Befehl gefixt:

1
sed -i -e 's/\r$//' scriptname.sh

Danach haben die ersten drei Befehle bis hier funktioniert:

1
2
3
4
5
6
#!/bin/bash

test $(id -u) -eq 0 || exec sudo "$0" "$@"

hdparm -I /dev/sda
echo -n mem > /sys/power/state

Mehr konnte ich nicht testen, da ich Zuhause auf meinem Privaten Rechner bin und das nicht ausprobieren möchte 😉

Denn Rest werde ich sobald ich am Montag in meinem Geschäft bin testen.

Gruss

Jowie

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 12527

Jowie schrieb:

ich denke ich habe das Problem gelöst ☺

Es kam folgende Fehlermeldung dabei heraus: "bad interpreter: No such file or directory"

Dies habe ich mit diesem Befehl gefixt:

1
sed -i -e 's/\r$//' scriptname.sh

Du hast also die Datei mit DOS-Zeilenenden abgespeichert. Da gibt es auch noch das Tool d2u und dos2unix. Aber Du hast es ja jetzt repariert.

Wenn Du under Windows editierst, solltest Du vielleicht einen Editor benutzen, der auch Unix-Dateiendungen produzieren kann. Es gibt z.B. gvim auch kostenlos für Windows, aber auch noch viele andere. Nur der mitgelieferte Notepad ist meist nicht so gut, es sei denn, der kann mittlerweile auch Unix-Dateiendungen.

Jowie

(Themenstarter)

Anmeldungsdatum:
30. April 2019

Beiträge: 16

Guten Morgen

Wenn ich es richtig verstanden habe, braucht man um in Windows die Datei zu editieren einen Speziellen Editor, der Unix Dateiendungen produzieren kann?

Ich wollte heute morgen das Ganze testen. Jedoch hat es hier nicht funktioniert...

Dabei ist folgende Fehlermeldung beim ausführen des Scriptes via automatisches ausführen durch die Sicherheitsabfrage gekommen:

1
2
There was an error creating the child process for this terminal
Failed to execute process "/Pfad" (Permission denied)

Die andere Fehlermeldung, beim ausführen des Scripts vom Terminal aus ist folgende:

1
2
3
: No such file or directory
: Permission denied4: /sys/power/state
./autorun.sh: line 5: $'\r': command not found

Habe genau das gleiche Script genommen, wie Zuhause

Gruss

Jowie

Bilder

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 12527

Jowie schrieb:

Wenn ich es richtig verstanden habe, braucht man um in Windows die Datei zu editieren einen Speziellen Editor, der Unix Dateiendungen produzieren kann?

Genau. Notepad++ ist auch eine kostenlose Möglichkeit. Oder nach dem Kopieren auf das Linux-System führst Du d2u datei aus.

Dabei ist folgende Fehlermeldung beim ausführen des Scriptes via automatisches ausführen durch die Sicherheitsabfrage gekommen:

1
2
There was an error creating the child process for this terminal
Failed to execute process "/Pfad" (Permission denied)

Und

Die andere Fehlermeldung, beim ausführen des Scripts vom Terminal aus ist folgende:

1
2
3
: No such file or directory
: Permission denied4: /sys/power/state
./autorun.sh: line 5: $'\r': command not found

Habe genau das gleiche Script genommen, wie Zuhause

Offensichtlich hast Du wieder Windows-Zeilenumbrüche. "Permission denied" oben könnte auch daran liegen, dass die Ausführungsrechte des Skriptes nicht passen. In diesem Codeblock führst Du vermutlich das Skript nicht als "root" aus und kannst daher nicht auf /sys zugreifen:

1
2
$ ls -ld /sys/power/state
-rw-r--r-- 1 root root 4096 Mai 27 11:51 /sys/power/state

Bitte hänge keine JPEGs an, sondern kopiere den Inhalt des Fensters und poste ihn hier in einem Codeblock oder als Text-Anhang.

Jowie

(Themenstarter)

Anmeldungsdatum:
30. April 2019

Beiträge: 16

Hallo Zusammen

Ich habe nichts mehr in Windows bearbeitet. Alles nur in Linux.

Hmm dann sollte ich die Berechtigung dieses Ordners ändern: /sys/power/state

Offensichtlich hast Du wieder Windows-Zeilenumbrüche. "Permission denied" oben könnte auch daran liegen, dass die Ausführungsrechte des Skriptes nicht passen. In diesem Codeblock führst Du vermutlich das Skript nicht als "root" aus und kannst daher nicht auf /sys zugreifen:

Also ich habe recherchiert und folgenden Befehl gefunden...

1
sed -i '1s/^.*#//;s/\r$//' autorun.sh

Diesen habe ich nun eingetippt und nun kann ich das Script wieder ausführen, sogar mit allen Befehlen, die ich wollte. Jedoch führt er die Befehle nun im Hintergrund aus.

Ich möchte jedoch sehen ob er nun alle Befehle erfolgreich ausgeführt hat.

Das mit den Bildern werde ich in Zukunft so machen.

Bitte hänge keine JPEGs an, sondern kopiere den Inhalt des Fensters und poste ihn hier in einem Codeblock oder als Text-Anhang.

Weiss da jemand wie man das Rückgängig macht?

Danke und Gruss

Jowie

Rechnungstore

Anmeldungsdatum:
18. Februar 2011

Beiträge: 157

"Permission denied" oben könnte auch daran liegen, dass die Ausführungsrechte des Skriptes nicht passen. In diesem Codeblock führst Du vermutlich das Skript nicht als "root" aus und kannst daher nicht auf /sys zugreifen:

@rklm

Wieso wird dieser Codeblock nicht als root ausgeführt? Die dritte Zeile sollte doch genau das bewerkstelligen.

@Jowie

Ich würde die Berechtigungen für "/sys/power/state" nicht ändern.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 12527

Rechnungstore schrieb:

"Permission denied" oben könnte auch daran liegen, dass die Ausführungsrechte des Skriptes nicht passen. In diesem Codeblock führst Du vermutlich das Skript nicht als "root" aus und kannst daher nicht auf /sys zugreifen:

@rklm

Wieso wird dieser Codeblock nicht als root ausgeführt? Die dritte Zeile sollte doch genau das bewerkstelligen.

Ja, aber war das auch genau das Skript, das den Fehler produziert hat? Sehen wir ja nicht. Es wäre ganz gut, hier den aktuellen Stand des Skriptes oder der Skripte zu dokumentieren. Bei so viel Hin und Her fällt es schwer die Übersicht zu behalten.

Und dann gibt es noch ACLs...

@Jowie

Ich würde die Berechtigungen für "/sys/power/state" nicht ändern.

Definitiv nicht!!