sudo 对不起,你必须有一个 tty 到 运行 sudo
sudo sorry, you must have a tty to run sudo
我已经编写了一个 bash 脚本,用于每台机器和 运行s 命令集。我正在使用该机器上具有 sudo privlidges 的用户 iis。但是,当我 运行 sudo yum 命令时,我得到 sudo: sorry, you must have a tty to 运行 sudo.
不确定哪里出了问题?我正在使用 -t 命令强制,但它仍然不起作用
bash 脚本
#!/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
错误:
sudo: sorry, you must have a tty to run sudo
在远程主机上,在 /etc/sudoers 上注释以下行:
grep tty /etc/sudoers
#Defaults requiretty
这样您就可以继续了。确保您了解这样做的后果:
man sudoers | grep -i requiretty -A 5
requiretty If set, sudo will only run when the user is logged in
to a real tty. When this flag is set, sudo can only be
run from a login session and not via other means such
as cron(8) or cgi-bin scripts. This flag is off by
default.
如果您不想全局禁用 requiretty,您可以为特定用户禁用它:
示例:
Defaults requiretty
Defaults:your_username_goes_here !requiretty
虽然这不是 SO 的问题,但您已经差不多了……您需要更改的是上面 -t 的数量……试试这个:
sshpass -p$password </dev/null ssh -ttt -o "StrictHostKeyChecking no" iis@$privateip "
我已经编写了一个 bash 脚本,用于每台机器和 运行s 命令集。我正在使用该机器上具有 sudo privlidges 的用户 iis。但是,当我 运行 sudo yum 命令时,我得到 sudo: sorry, you must have a tty to 运行 sudo.
不确定哪里出了问题?我正在使用 -t 命令强制,但它仍然不起作用
bash 脚本
#!/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
错误:
sudo: sorry, you must have a tty to run sudo
在远程主机上,在 /etc/sudoers 上注释以下行:
grep tty /etc/sudoers
#Defaults requiretty
这样您就可以继续了。确保您了解这样做的后果:
man sudoers | grep -i requiretty -A 5
requiretty If set, sudo will only run when the user is logged in
to a real tty. When this flag is set, sudo can only be
run from a login session and not via other means such
as cron(8) or cgi-bin scripts. This flag is off by
default.
如果您不想全局禁用 requiretty,您可以为特定用户禁用它:
示例:
Defaults requiretty
Defaults:your_username_goes_here !requiretty
虽然这不是 SO 的问题,但您已经差不多了……您需要更改的是上面 -t 的数量……试试这个:
sshpass -p$password </dev/null ssh -ttt -o "StrictHostKeyChecking no" iis@$privateip "