Jump to content



Βοηθεια σε php με exec


kondax

Recommended Posts

Παιδια καλησπερα,

Εχω την ακολουθη εικονα post-6638-1416074466,2308_thumb.png στο πρωτο textfield θελω να εμφανιζει την ip σε λινουξ και στο δευτερο μολις παταω το κουμπι να κανει αλλαγη στην δωθησα ip.

Ο κωδικας σε php ειναι

<?php

$textfield=exec[ifconfig eth0,$textfield];

if (isset $_Post["change"])

$_textfield2=exec[ifconfig eth0 192.168.1.1, $textfield2];

?>

και σε html

TD width="493" class="textarea"><form name="form1" method="post" action="">

<label>Interface IP address:

<input type="text" name="textfield">

</label>

<p>

<label>New IP address:

<input type="text" name="textfield2">

</label><input name="" type="button" value="Change">

</p>

<p> </p>

</form> </TD>

</TR>

<TR>

<TD bgcolor="#CC9900" class="leftside"> </TD>

<TD class="textarea"> </TD>

</TR>

</TABLE>

μηπως μπορειτε να μου πειτε τι λαθος εχω και δε παιζει η php

Ευχαριστω εκ των προτερων!!:T:

Link to comment
Share on other sites

  • 3 weeks later...

1ον : η εντολή ifconfig δεν επιστρέφει μόνο την IP που εσύ ψάχνεις ώστε να τη βάλεις στο 1ο πεδίο

μια εντολή που θα βόλευε δηλαδή είναι αυτή :

ifconfig | egrep -o '([0-9]{1,3}\.){3}[0-9]{1,3}' | egrep -v '255|(127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})'

(προσοχή στα εισαγωγικά, θέλουν \ , για να μπει μέσα σε exec ...)

2ον : η εντολή ifconfig χρειάζεται root δικαιώματα για να τρέξει και να αλλάξει την IP με αυτή που θα του βάλεις στο 2ο πεδίο....

οπότε η λύση -αν υπάρχει- είναι μακρυά από αυτό που έχεις κάνει εσύ !

Link to comment
Share on other sites

Ένας τρόπος να εκτελείς τέτοιες εντολές, αλλά και οτιδήποτε άλλο χρειάζεται δικαιώματα root, τότε πρέπει να χρησιμοποιήσεις ένα daemon το οποίο έχει τέτοια δικαιώματα... αυτό από την μια δεν είναι ασφαλές, αλλά κάνει την δουλειά...

Σε τέτοιες περιπτώσεις λοιπόν, πρέπει να γράψεις ένα πρόγραμμα (πχ σε C/C++ ή perl) το οποίο να δαιμονιάζεται (ψάξε για daemonize)... Αν αυτό το πρόγραμμα, τρέχει κατά το boot όπου το σύστημα έχει root δικαιώματα, τότε και ότι άλλο τρέξει θα έχει root δικαιώματα... Περιγραφικά λοιπόν, θέλεις έναν wrapper, ο οποίος θα δέχεται σαν argument την εντολή που θες να τρέξεις και θα την τρέχει ο ίδιος... αυτό συνήθως γίνεται με tcp sockets, δηλαδή ο daemon δέχεται tcp connections από το localhost και μόνον και η php ανοίγει ένα connection και περνάει τα δεδομένα (δηλαδή την εντολή) στον daemon, οπότε και ο daemon την εκτελεί...

Link to comment
Share on other sites

κάτι πιο εύκολο είναι να βάλεις απλά μια γραμμή στο αρχείο sudoers ώστε να μπορεί κάποιος χρήστης (στην προκειμένη περίπτωση η php) να εκτελεί με sudo μια εντολή.

θα σε βοηθήσω στο 1ο κομμάτι που είναι να περάσεις την IP σε ένα textfield στην html σου :

- δημιουργείς ένα script σαν αυτό που δείχνω παρακάτω σε κάποιο φάκελο που θέλεις π.χ. /home/user/myip.sh

- το κάνεις εκτελέσιμο :

chmod +x myip.sh

- προσθέτεις στο αρχείο /etc/sudoers την γραμμή :

www-data ALL = NOPASSWD: /home/user/myip.sh

- στη συνέχεια κάνεις edit το σημείο όπου θέλεις να εμφανίζει την IP ως εξής :

π.χ.

<label>Interface IP address:

<input type="text" name="textfield" value="<?php echo shell_exec('sudo /home/user/myip.sh');?>">

</label>

ελπίζω να μπήκες λίγο στη λογική :dirol:

myip.sh ->

#!/bin/sh

# Shell script scripts to read ip address

# -------------------------------------------------------------------------

# Copyright © 2005 nixCraft project <http://cyberciti.biz/fb/>

# This script is licensed under GNU GPL version 2.0 or above

# -------------------------------------------------------------------------

# This script is part of nixCraft shell script collection (NSSC)

# Visit http://bash.cyberciti.biz/ for more information.

# -------------------------------------------------------------------------

# Get OS name

OS=`uname`

IO="" # store IP

case $OS in

Linux) IP=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'`;;

FreeBSD|OpenBSD) IP=`ifconfig | grep -E 'inet.[0-9]' | grep -v '127.0.0.1' | awk '{ print $2}'` ;;

SunOS) IP=`ifconfig -a | grep inet | grep -v '127.0.0.1' | awk '{ print $2} '` ;;

*) IP="Unknown";;

esac

echo "$IP"

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Δημιουργία...

Important Information

Ο ιστότοπος theLab.gr χρησιμοποιεί cookies για να διασφαλίσει την καλύτερη εμπειρία σας κατά την περιήγηση. Μπορείτε να προσαρμόσετε τις ρυθμίσεις των cookies σας , διαφορετικά θα υποθέσουμε ότι είστε εντάξει για να συνεχίσετε.