Υλοποίηση login μηχανισμού(bash scripting)  Το θέμα επιλύθηκε

...IDE, compilers, κλπ

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

Υλοποίηση login μηχανισμού(bash scripting)  Το θέμα επιλύθηκε

Δημοσίευσηαπό poscore » 30 Απρ 2012, 04:32

Καλημέρα σας,

Π Ρ Ο Β Λ Η Μ Α

με αφορμή μιας φλασιάς που είχα τώρα(κοντεύει 5 το πρωί) και της δημοσίευσης εδώ viewtopic.php?t=10282 που δυστυχώς δεν έχει απαντηθεί θέλω να δημιουργήσω έναν απλό bash scripting μηχανισμό που απλά θα κάνει login σε κάποιον server. Θα κάνω edit μόλις το καταφέρω και θα παραθέσω και τον γ*****κώδικα που δεν είναι τίποτα άλλο απο μερικές απλές εντολές. :lol:

Το σημείο που κολλάω μιας και δεν είμαι και πολύ familiar με το bash είναι όταν πρέπει να δώσω τον κωδικό χρησιμοποιώντας ssh. Αν δεν κάνω λάθος πρέπει να υπάρχουν 2-3 τρόποι για να υλοποιηθεί αυτό και θα ήθελα κάποιος που γνωρίζει να μου πει πάνω κάτω ποιός πιστεύει οτι είναι ο καλύτερος σε θέμα ασφάλειας/ταχύτητας.

Ευχαριστώ πολύ! Φιλικά, poscore...
Λ Υ Σ Η

Κάθε τροποποίηση αλλαγή προσθήκη άποψη είναι δεκτή. Δεν είναι τίποτα παράξενο εκτός απο κάποια if else και απλές εντολές.
Τι κάνει? Υπάρχουν δυο λειτουργίες ssh και sftp που επιλέγετε ποια θα χρησιμοποιήσετε στην αρχή και γίνεται loging σε κάποιο host χωρίς να δίνετε τον κωδικό σας κάθε φορά. Για την προσωπική μου ζωή είναι χρήσιμο τουλάχιστον :) Have fun!

Παραθέτω τον κώδικα παρακάτω:
Κώδικας: Επιλογή όλων
#!/bin/bash

# Remote control to host
# Created by, -poscore-
# COYPRIGHT http://creativecommons.org/licences/by-nc-sa/3.0/gr/

# Please change the USERNAME AND HOSTNAME of YOURS. Everything else should be working fine.
#USERNAME="yourusername"
#HOSTNAME="yourhostname"

KEYNAME="remote_manager_key"

# Check if username & hostname has been changed
if [ $USERNAME == 'yourusername' ]; then
echo "ERROR: USERNAME has not been changed! Please of this file with an editor and change USERNAME variable to yours. Now exit!"
exit;
fi

if [ $HOSTNAME == 'yourhostname' ]; then
echo "ERROR: HOSTNAME has not been changed! Please of this file with an editor and change HOSTNAME variable to yours. Now exit!"
exit;
fi
while [ TRUE ]; do
echo "Choose type:"
echo "1 for SSH to host (remote control)"
echo "2 for SFTP to host (files transfer)"
echo "and press [ENTER]."
read CHOICE;

# Configure RSA keygen(if needed)
if [ -e "~/.ssh/$KEYNAME" ]; then
echo "An RSA key will be created, this is done once and next time you will run thsi script these commands should be ignored!"
echo "Attemping to create RSA public key..."
echo "Please press [Enter] for both password fields!"
echo $KEYNAME | ssh-keygen -t rsa;
echo "Moving the keys to .ssh folder..."
mv $KEYNAME $KEYNAME.pub ~/.ssh/

echo "Transfering public key to host...";
scp ~/.ssh/myrsakey.pub $USERNAME@$HOSTNAME:~/.ssh/authorized_keys
fi

if [ $CHOICE -eq 1 ]; then
# Authenticating to host via ssh
echo "Attempting to authenticate via ssh protocol to host..."
ssh $USERNAME@$HOSTNAME
elif [ $CHOICE -eq 2 ]; then
# Authenticating to host via sftp
echo "Attempting to authenticate via sftp protocol to host..."
sftp $USERNAME@$HOSTNAME
else
echo "Thanks for using my program! Hope you enjoy :)"
exit 0;
fi
done


Κλασικά, το αποθηκεύετε ως .sh αρχείο(για παράδειγμα) εκτελείτε chmod +x <filename> και το τρέχετε ./<filename>

Off topic:
Ψίνομαι να το επεκτείνω οπότε πιθανώς να υπάρχει και v2.
Άβαταρ μέλους
poscore
punkTUX
punkTUX
 
Δημοσιεύσεις: 153
Εγγραφή: 28 Απρ 2012, 17:21
Εκτύπωση

Επιστροφή στο Εφαρμογές για Ανάπτυξη Λογισμικού