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" statt iis@$privateip) wird verhindern, dass andere Fehler-in diesem speziellen Fall, zum Beispiel, würden Sie haben Fehler wenn IFS enthalten die . Charakter, oder irgendetwas anderes, dass konnte gefunden werden, in $privateip.
  • Auch [ -f "$INPUT" ], nicht [ -f $INPUT ] oder sonst einen leeren Wert INPUT 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).
InformationsquelleAutor user3846091 | 2015-01-28
Schreibe einen Kommentar