sudo sorry, Sie müssen haben a tty to run sudo
Ich geschrieben habe ein bash-Skript, das geht mit jeder Maschine und jeder läuft set-Befehl. Ich bin mit dem Benutzer iis, der hat sudo privlidges auf dieser Maschine. Jedoch, wenn ich den sudo Befehl yum bekomme ich sudo: sorry, Sie müssen haben a tty to run sudo.
Nicht sicher, was ist falsch ? Ich bin mit dem -t-Befehl zu zwingen, aber es würde immer noch nicht funktionieren
bash-Skript
#!/bin/bash
INPUT=ccidetails.csv
OLDIFS=$IFS
IFS=,
[ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; }
while read privateip password
do
echo $privateip
scp /home/Data/Test.c iis@$privateip:/tmp
sshpass -p$password </dev/null ssh -t -o "StrictHostKeyChecking no" iis@$privateip "
hostname
cd /tmp
gcc Test.c -o TEST
./TEST
sudo yum -y update glibc
gcc Test.c -o TEST
./TEST
exit
" >> output.txt
done < $INPUT
IFS=$OLDIFS
Fehler:
sudo: sorry, you must have a tty to run sudo
- BTW, Sie haben eine Reihe von bugs, die hier im Zusammenhang mit Mangel an Zitate -- sehen, was passiert, wenn Sie haben ein Passwort mit einem Leerzeichen, zum Beispiel. Verwenden
-p"$password"
, nicht-p$password
. Ebenso zitieren andere Erweiterungen (wie"iis@$privateip"
stattiis@$privateip
) wird verhindern, dass andere Fehler-in diesem speziellen Fall, zum Beispiel, würden Sie haben Fehler wennIFS
enthalten die.
Charakter, oder irgendetwas anderes, dass konnte gefunden werden, in$privateip
. - Auch
[ -f "$INPUT" ]
, nicht[ -f $INPUT ]
oder sonst einen leeren WertINPUT
wird[ -f ]
entspricht[ -n -f ]
, das ist immer wahr.[[ -f $INPUT ]]
ist auch sicher, da[[ ]]
hat die Unterstützung von bash-parser (und unterdrückt string-splitting und glob-expansion).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zwar ist dies nicht eine Frage für SO, du bist fast da ... was Sie ändern müssen, ist die Anzahl der -t oben ... versuchen Sie dies:
-tt
ausreichend sein, sollte unbedingt reservieren Sie ein TTY.t
s, der einzige Effekt, den Sie bekommen können aus mehr zurückREQUEST_TTY_FORCE
zuREQUEST_TTY_YES
, das ist, was Sie erhalten, von nur einem. (Dieser sieht eigentlich wie ein bug zu mir, wie das Verhalten im Einklang mit den docs wäre, um zu bleibenREQUEST_TTY_FORCE
).Auf dem remote host kommentieren Sie die Zeile unten auf /etc/sudoers:
Die Ihnen erlauben, um fortzufahren. Stellen Sie sicher, Sie verstehen, die Folgen zu tun:
Wenn Sie nicht möchten, deaktivieren Sie requiretty Global deaktivieren Sie es für einen bestimmten Benutzer:
Beispiel:
/etc/sudoers
, wie sind Sie auf die Vermeidung dersudo
Aufruf benötigen ein Passwort, um fortzufahren?