Avatar billede dumazz.dk Nybegynder
08. november 2004 - 21:15 Der er 14 kommentarer og
1 løsning

Shellscripts - Nybegynder problem

Hvordan logger man ind som root én gang for alle?

Jeg har "lavet" dette script:

# ! /bin/sh
# This is GPL
PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
kdesu apt-get update
echo "UPDATE done..."
apt-get dist-upgrade
echo "DIST-UPGRADE done..."
apt-get upgrade
echo "UPGRADE done..."

Der er flere ting galt...

- De forskellige updates og upgrades er ikke verbose

- Hver kommando skal startes med kdesu, for at køres som root

- Der logges ikke af root i slutningen af scriptet

Hvad skal jeg gøre?
Avatar billede junl Nybegynder
08. november 2004 - 21:17 #1
Åben en terminal og skriv su - skriv dit root password og skriv kommandoerne manuelt  -- eller forstår jeg ikke helt hvad du vil?
Avatar billede dumazz.dk Nybegynder
08. november 2004 - 21:20 #2
det skal foregå i shellscriptet...
Avatar billede junl Nybegynder
08. november 2004 - 21:22 #3
Ellers så skriv scriptet, med de kommandoer du vil køre ... også bruge kdesu på selve scriptet.

# ! /bin/sh
# This is GPL
PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
apt-get update
echo "UPDATE done..."
apt-get dist-upgrade
echo "DIST-UPGRADE done..."
apt-get upgrade
echo "UPGRADE done..."

gem som filnavn

kør fra kde med kdesu filnavn

Kender ikke kde ret godt - men det er vel næsten det samme som gnome
Avatar billede junl Nybegynder
08. november 2004 - 21:24 #4
ja - du skal nok skrive i kdesu "sh /sti/til/filnavn"
Avatar billede junl Nybegynder
08. november 2004 - 21:25 #5
Rettelse: ja - du skal nok skrive i kde, kdesu "sh /sti/til/filnavn"
Avatar billede dumazz.dk Nybegynder
08. november 2004 - 21:25 #6
jeg kender kdesu tingen på filnavnene, men vil gerne undgå den...

Her nu ændret lidt, men den fortsætter ikke når man skriver pass...

# ! /bin/sh
# This is GPL
PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
clear
echo "This utility will automaticly update the software on your pc."
if [ $(whoami) != "root" ]; then
clear
su
fi
apt-get update
echo "UPDATE done... "
apt-get dist-upgrade
echo "DIST-UPGRADE done..."
apt-get upgrade
echo "UPGRADE done..."
exit
Avatar billede junl Nybegynder
08. november 2004 - 21:40 #7
Det kan ikke lade sig gøre - du kan ikke bare skrive su i scriptet ... overvej lige sikkerheden et øjeblik! Brug kdesu på scriptet eller kør det i terminalen som root (brug f.eks su).
Ellers kan du kigge sudo, som vist kan gøre noget i retning af det du ønsker - man sudo hvis du har det installeret
Avatar billede dumazz.dk Nybegynder
08. november 2004 - 21:46 #8
Det funker ikke...

# ! /bin/sh
# This is GPL
PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
clear
echo "This utility will automaticly update the software on your pc."
if [ $(whoami) != "root" ]; then
    clear
    sudo -p
fi
apt-get update
echo "UPDATE done... The list is now up-to-date"
apt-get dist-upgrade
echo "DIST-UPGRADE done... The list is now modified to fit your distribution"
apt-get upgrade
echo "UPGRADE done... The software is now installed"
exit
Avatar billede junl Nybegynder
08. november 2004 - 21:50 #9
Jeg ved ikke hvordan man bruger sudo - men lidt google kan sikkert hjælpe dig. Eller andre på eksperten - god fornøjelse :-)
Avatar billede dumazz.dk Nybegynder
09. november 2004 - 09:36 #10
Jeg dropper det med root-login, indtil videre, så den skal køres som root....

Men hvad er galt med min select?

----

# ! /bin/sh
# This is GPL
PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
clear
echo "This utility will automaticly update the software on your pc."
if [ $(whoami) != "root" ]; then
clear
sudo -p
fi
select CHOISE in "Verbose" "Quiet" "Abort";do
if [ "$CHOICE" = "Abort" ]; then
  exit
fi
done
clear
echo ""
echo "UPDATING started..."
apt-get update > log
cat log | grep "Err"
if [ "`cat log | grep "Err"`" ]; then
echo "UPDATING Failed. Please make sure that the mirror is accessable"
else
echo "UPDATING done"
fi

if [ "$CHOICE" = "Verbose" ]; then
cat log
fi

echo ""
echo "DIST-UPGRADING started..."
apt-get -y dist-upgrade > log
if [ "`cat log | grep "0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded."`" ]; then
echo "DIST-UPGRADING. Nothing was upgraded"
else
echo "DIST-UPGRADING. done"
fi

if [ "$CHOICE" = "Verbose" ]; then
cat log
fi

echo ""
echo "UPGRADING started..."
apt-get -y upgrade > log
if [ "`cat log | grep "0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded."`" ]; then
echo "UPGRADING. Nothing was upgraded"
else
echo "UPGRADING. done"
fi

if [ "$CHOICE" = "Verbose" ]; then
cat log
fi

exit
Avatar billede dumazz.dk Nybegynder
09. november 2004 - 10:59 #11
Og evt. farvet skrift, hvordan laves det?
Avatar billede dumazz.dk Nybegynder
09. november 2004 - 11:01 #12
Det virker nu tilfredsstillende;
-----

# ! /bin/sh
# This is GPL
PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
clear
echo "This utility will automaticly update the software on your pc."
if [ $(whoami) != "root" ]; then
    clear
    echo "You need root privileges to execute this program..."
    exit
fi
select CHOICE in "Verbose" "Quiet" "Abort";do
    clear
    echo "Choice: $CHOICE"
    if [ "$CHOICE" = "Abort" ]; then
        exit
    fi
    break
done
echo ""
echo "UPDATING started..."
apt-get update > log
cat log | grep "Err"
if [ "`cat log | grep "Err"`" ]; then
    echo ""
    echo "UPDATING Failed. Please make sure that the mirror is accessable"   
    echo ""
else
    echo "UPDATING done"
fi

if [ "$CHOICE" = "Verbose" ]; then
cat log
fi

echo ""
echo "DIST-UPGRADING started..."
apt-get -y dist-upgrade > log
if [ "`cat log | grep "0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded."`" ]; then
    echo "DIST-UPGRADING. Nothing was upgraded"   
else
    echo "DIST-UPGRADING. done"
fi

if [ "$CHOICE" = "Verbose" ]; then
cat log
fi

echo ""
echo "UPGRADING started..."
apt-get -y upgrade > log
if [ "`cat log | grep "0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded."`" ]; then
    echo "UPGRADING. Nothing was upgraded"   
else
    echo "UPGRADING. done"
fi

if [ "$CHOICE" = "Verbose" ]; then
cat log
fi
echo ""
exit
Avatar billede dumazz.dk Nybegynder
09. november 2004 - 13:12 #13
Har udbygget lidt...

# ! /bin/sh
# This is GPL
PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
FAILURE=0
NOTHING=0
DATESTART=$(date +%R)
clear
echo "This utility will automaticly update the software on your pc."
if [ $(whoami) != "root" ]; then
    clear
    echo "You need root privileges to execute this program..."
    exit
fi
select CHOICE in "Verbose" "Quiet" "Abort";do
    clear
    echo "Choice: $CHOICE"
    if [ "$CHOICE" = "Abort" ]; then
        exit
    fi
    break
done
echo ""
echo "APT STARTED $DATESTART"
echo "UPDATING started..."
apt-get update > log

if [ "$CHOICE" = "Verbose" ]; then
    cat log
fi

cat log | grep "Err"
if [ "`cat log | grep "Err"`" ]; then
    echo ""
    echo "UPDATING Failed. Please make sure that the mirror is accessable"   
    echo ""
    FAILURE=1
else
    echo "UPDATING done"
fi

echo ""
echo "DIST-UPGRADING started..."
apt-get -y dist-upgrade > log

if [ "$CHOICE" = "Verbose" ]; then
    cat log
fi

if [ "`cat log | grep "0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded."`" ]; then
    echo "DIST-UPGRADING. Nothing was upgraded"
    NOTHING=1
else
    echo "DIST-UPGRADING. done"
fi

echo ""
echo "UPGRADING started..."
apt-get -y upgrade > log

if [ "$CHOICE" = "Verbose" ]; then
    cat log
fi

if [ "`cat log | grep "0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded."`" ]; then
    echo "UPGRADING. Nothing was upgraded"   
    NOTHING=1
else
    echo "UPGRADING. done"
fi

echo ""
if [ $NOTHING = 1 ]; then
    EXTRA=", but nothing was installed"
else
    EXTRA=""
fi
if [ $FAILURE = 1 ]; then
echo "Something went wrong"
else
echo "Everything went just fine$EXTRA"
fi
DATEFINISH=$(date +%R)
echo "APT FINISHED $DATEFINISH"
exit

Hvordan trækker jeg de to datoer fra hinanden, så jeg kan outputte hvor mange minutter og sekunder operationen tog...
Avatar billede dumazz.dk Nybegynder
08. december 2004 - 14:57 #14
Point anyone?
Avatar billede dumazz.dk Nybegynder
21. december 2004 - 11:24 #15
nå...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester