somicoy
asked on
PHP variables to perl
Hello,
Is it possible to pass PHP variables to my script that backups firewall configs.
I use expect on my script
#!/usr/bin/expect
Is it possible to pass PHP variables to my script that backups firewall configs.
I use expect on my script
#!/usr/bin/expect
3. clarification -- you sould then launch the perl script, with command line options, from PHP.
ASKER
Yes, im using centos 6.2
1. does popen() support expect ? i tried to run with this example
http://www.molecularsciences.org/PHP/proc_open_tutorial_and_examples
-Executing Perl code from PHP
2. I really don't know much perl. So i rather to this with PHP
3. Can you provide some example?
Here little from my run.pl
#!/usr/bin/expect
....
set pw1 @ARGV;
.....
spawn "/bin/bash"
send "ssh ......." //ssh connect
So the thing im trying to do is that i can use POST to write password for the script. ( I dont want to save password to the script)
Script works fine if i write the password to it.
1. does popen() support expect ? i tried to run with this example
http://www.molecularsciences.org/PHP/proc_open_tutorial_and_examples
-Executing Perl code from PHP
2. I really don't know much perl. So i rather to this with PHP
3. Can you provide some example?
Here little from my run.pl
#!/usr/bin/expect
....
set pw1 @ARGV;
.....
spawn "/bin/bash"
send "ssh ......." //ssh connect
So the thing im trying to do is that i can use POST to write password for the script. ( I dont want to save password to the script)
Script works fine if i write the password to it.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
perl doesn't accept command line arguments.
I just found the script online and made few changes of my own.
for the ssh/scp line i need to give password.
in the script there was:
set pw1 xxx;
....
expect "\nPassword:"
send "$pw1\r"
expect "#"
So i need pw1 to be like :set pw1 $passwd (this is from GET_POST['password']
I just found the script online and made few changes of my own.
for the ssh/scp line i need to give password.
in the script there was:
set pw1 xxx;
....
expect "\nPassword:"
send "$pw1\r"
expect "#"
So i need pw1 to be like :set pw1 $passwd (this is from GET_POST['password']
ASKER
does command line arguments work with #!/usr/bin/expect ?
php:
$passwd = $_POST['password']; (works)
exec("/var/www/html/5505.e xp ". $passwd);
5505.exp:
can't read "passwd": no such variable
while executing
"$passwd=$ARGV[0]"
php:
$passwd = $_POST['password']; (works)
exec("/var/www/html/5505.e
5505.exp:
can't read "passwd": no such variable
while executing
"$passwd=$ARGV[0]"
ASKER
set arg1 [lindex $argv 0]
that helped to get it working with expect !
that helped to get it working with expect !
expect takes its own commands at the command line. You can tell expect to read from a file.
http://linux.die.net/man/1/expect
If you can do any perl programming at all, you might want to replace expect with simply reading from the standard input. Me, I'd be nervous about using expect for communications between two processes on the same computer. The expect program is for something like login over a serial line or network.
As for your exec attempt, I suggest the following debugging
$passwd = $_POST['password']; // (works)
$command = "/var/www/html/5505.exp ". $passwd;
die ( $command ); // Then uncomment once you think $command is what you want.
exec("/var/www/html/5505.e xp ". $passwd);
Test the other end by typing in the command by hand to see how 5505.exp interacts with you. Make sure it works when you type by hand. (If it doesn't, nothing in the PHP file is going to work until it 5505.exp works by hand.)
http://linux.die.net/man/1/expect
If you can do any perl programming at all, you might want to replace expect with simply reading from the standard input. Me, I'd be nervous about using expect for communications between two processes on the same computer. The expect program is for something like login over a serial line or network.
As for your exec attempt, I suggest the following debugging
$passwd = $_POST['password']; // (works)
$command = "/var/www/html/5505.exp ". $passwd;
die ( $command ); // Then uncomment once you think $command is what you want.
exec("/var/www/html/5505.e
Test the other end by typing in the command by hand to see how 5505.exp interacts with you. Make sure it works when you type by hand. (If it doesn't, nothing in the PHP file is going to work until it 5505.exp works by hand.)
#!/usr/bin/expect
I can think of a few different ways to solve your problem, keeping in mind that I'm really short on details as to what you want to do.
1. One solution is to use popen() to launch the perl script. When you use popen() to launch the script and open a stream between your PHP script and the perl script's standard input.
The next two skip using expect.
2. Convert your PHP CGI to a perl CGI and do all the work in a single script.
3. Change your perl script so that it accepts command line options and parse the command line options.
I don't know which solution is best for you. #1 seems to fit your request more directly.