Script για εκτέλεση εντολών για όλους τους χρήστες

...το μέρος για να ξεκινήσετε!

Συντονιστής: adem1

Κανόνες Δ. Συζήτησης
Παρακαλώ να επιλέξετε, με προσοχή, την άδεια που θέλετε να έχουν οι οδηγοί που συγγράφετε.
Πληροφορίες για τις άδειες μπορείτε να βρείτε εδώ.
Άμα επιθυμείτε κάποια άλλη άδεια επικοινωνήστε με κάποιο Διαχειριστή είτε Συντονιστή.

Σημαντικό είναι να χρησιμοποιήσετε την υπηρεσία http://imagebin.ubuntu-gr.org για τις εικόνες.

Script για εκτέλεση εντολών για όλους τους χρήστες

Δημοσίευσηαπό alkisg » 15 Νοέμ 2008, 17:41

Το παρακάτω script μπορεί να χρησιμοποιηθεί για την εκτέλεση εντολών για όλους τους χρήστες (κάτι που χρειάζεται συχνά σε servers).

Για παράδειγμα, αν το καλέσουμε με
Κώδικας: Επιλογή όλων
forallusers chown -R USER_NAME:USER_GROUP USER_HOME


τότε θα παράγει ένα αρχείο /tmp/forallusers_generated_script με περιεχόμενα παρόμοια με τα παρακάτω:
Κώδικας: Επιλογή όλων
chown -R alkisg:alkisg /home/alkisg
chown -R user1:usersgroup /home/students/user1
chown -R user2:usersgroup /home/students/user2
chown -R user3:usersgroup /home/students/user3


Στη συνέχεια, αν δούμε ότι αυτό είναι που θέλουμε να εκτελέσουμε και δεν κάναμε κάποιο λάθος, τρέχουμε το αποτέλεσμα με
Κώδικας: Επιλογή όλων
/tmp/forallusers_generated_script

Φυσικά αν θέλουμε το κάνουμε και edit πριν το τρέξουμε.

Υποθέτω ότι είναι αρκετά ασφαλές αφού δεν εκτελεί τίποτα. Προτάσεις για βελτίωση καλοδεχούμενες!
Κώδικας: Επιλογή όλων
#!/bin/bash
# copyright 2008 Alkis Georgopoulos <http://alkisg.mysch.gr>
# distributed under the terms of the GNU General Public License version 3
# or any later version.

SCRIPT_NAME=`basename $0`
COMMAND_LINE=$@

if [ -z "$COMMAND_LINE" ]; then
   echo "$SCRIPT_NAME generates scripts that execute a specified command for all users."
   echo "It doesn't execute the resultant script, so it shouldn't cause any trouble."
   echo "It's your responsibility to check and execute the generated script."
   echo "Example usage:"
   echo "   $0 chown -R USER_NAME:USER_GROUP USER_HOME"
   echo "Valid parameters:"
   echo "   USER_NAME, USER_ID, USER_GROUP, USER_GROUP_ID, USER_HOME"
   exit
fi

echo "#!/bin/bash" > /tmp/forallusers_generated_script
echo "# Generated by the forallusers script - http://alkisg.mysch.gr" >> /tmp/forallusers_generated_script
echo >> /tmp/forallusers_generated_script

getent passwd | while read line
do
   USER_NAME=`echo $line|awk -F ':' '{ print $1 }'`
   USER_ID=`id -u $USER_NAME`
   USER_GROUP=`id -gn $USER_NAME`
   USER_GROUP_ID=`id -g $USER_NAME`
   USER_HOME=`echo $line|awk -F ':' '{ print $6 }'`

# TODO: don't hardcode minimum and maximum user IDs
   if (( $USER_ID >= 1000 && $USER_ID <= 2000 )); then
      COMMAND="$COMMAND_LINE"
      COMMAND=`echo "$COMMAND" | sed "s/USER_NAME/$USER_NAME/g"`
      COMMAND=`echo "$COMMAND" | sed "s/USER_ID/$USER_ID/g"`
      COMMAND=`echo "$COMMAND" | sed "s/USER_GROUP/$USER_GROUP/g"`
      COMMAND=`echo "$COMMAND" | sed "s/USER_GROUP_ID/$USER_GROUP_ID/g"`
      COMMAND=`echo "$COMMAND" | sed "s#USER_HOME#$USER_HOME#g"`

      echo "$COMMAND"
      echo "$COMMAND" >> /tmp/forallusers_generated_script
   fi
done

echo
chmod +x /tmp/forallusers_generated_script
echo "Script saved at /tmp/forallusers_generated_script, you may execute it if you like the result"
Τελευταία επεξεργασία από alkisg και 27 Ιουν 2011, 20:38, έχει επεξεργασθεί 1 φορά/ες συνολικά
alkisg
punkTUX
punkTUX
 
Δημοσιεύσεις: 190
Εγγραφή: 26 Μάιος 2008, 11:38
Εκτύπωση

Re: Script για εκτέλεση εντολών για όλους τους χρήστες

Δημοσίευσηαπό The_Mentor » 15 Νοέμ 2008, 19:31

ωραίος αλλά γιατί δεν το έβαλες με την μία στα howto για να μείνει στην κοινότητα σαν βοηθητικό εργαλείο;
The_Mentor
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 990
Εγγραφή: 15 Μάιος 2008, 14:34
Εκτύπωση


Re: Script για εκτέλεση εντολών για όλους τους χρήστες

Δημοσίευσηαπό gourgi » 15 Νοέμ 2008, 20:02

πολύ χρήσιμο
ευχαριστώ ;)
Όσο ζω ... μαθαίνω!
Desktop:stable9.04 i386|testing9.10 i386|Opteron Amd64 1.8GHz|RAM 2GB|Nvidia 6600GT|Msi K8N Platinum|Live! 24bit 5.1|Pixelview Playtv Pro BT878+rev.9d
Asus EEE 1000h9.04 i386|N270|RAM 2GB|945GME|RT2860|82801G
Oδηγίες προς νεοεισερχόμενους σε forum ή linux
Άβαταρ μέλους
gourgi
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 681
Εγγραφή: 02 Ιουν 2008, 14:45
Τοποθεσία: Ξάνθη - Πτελεός
IRC: gourgi
Εκτύπωση

Re: Script για εκτέλεση εντολών για όλους τους χρήστες

Δημοσίευσηαπό The_Mentor » 15 Νοέμ 2008, 20:29

Άλκη είναι εξαιρετικό το αρθράκι και θα το μετακινήσω.
The_Mentor
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 990
Εγγραφή: 15 Μάιος 2008, 14:34
Εκτύπωση

Re: Script για εκτέλεση εντολών για όλους τους χρήστες

Δημοσίευσηαπό xaris2335 » 19 Δεκ 2009, 05:01

Μήπως ξέρει κάποιος κανα site με scripts όχι για το grease monkey του φαιρφοξ αλλά για windows xp, να μπαίνεις στα xp άλλου Η/Υ;
Spoiler: show
Γνώσεις ⇛ Linux: | Προγραμματισμός:
Αγγλικά: καλά
Λειτουργικό ⇛ Ubuntu 10.04 LTS (32bit) ΕΛ σε Intel core 2 quad core Q9300
Προδιαγραφές ⇛INTEL CORE 2 QUAD CORE Q9300 2.50 GHZ LGA|WESTERN DIGITAL 750GB SATA2|ASUS 2GB DDR3 1333MHZ|GIGABYTE|ASUS EN9800GTX/HTDP 512MB PCI-E|Quickcam logitech E2500|Optiarc DVD RW AD-7173A

Κανάλι για Λίνουξ και όχι μόνο :lol: Διανομές Λίνουξ :lol:Συμβατότητα περιφ/κών με ubuntu :lol:
Άβαταρ μέλους
xaris2335
powerTUX
powerTUX
 
Δημοσιεύσεις: 1962
Εγγραφή: 10 Οκτ 2008, 16:16
Εκτύπωση


  • ΣΧΕΤΙΚΑ ΘΕΜΑΤΑ
    ΑΠΑΝΤΗΣΕΙΣ
    ΠΡΟΒΟΛΕΣ
    ΣΥΓΓΡΑΦΕΑΣ

Επιστροφή στο Οδηγοί - How to - Tutorials