拓扑是 server1 -> IPv6 ssh 隧道 -> server2 (secret sauce = $ip_addr) 代码逻辑遵循相同的路径 php cgi script -> shell script -> 检索 secret sauce $ip_addr 并回显它。我正在尝试从 server2 检索 $ip_addr 值并将其显示在启动 server1 上。
** * * 需要从邮件服务器回显的值 $ip_addr 的网络服务器上的代码*
<?php
$addr['ip_addr'] = shell_exec('sudo /home/wemail1/cgi-bin/ip_addr_stats');
$ip = $_POST['ip_addr'];
#echo "<pre>$ip['ip_addr']</pre>";
echo $ip['ip_addr'];
var_dump($_POST);
?>
** * **从上面执行以调用邮件服务器上的 php 脚本的 shell 脚本*
#!/bin/bash
ssh -p 22 -6 2600:3c01:e000:44::14 "php /var/www/localhost/cgi-bin/postUser2master.php .ssh;"
** * ** * *** 邮件服务器上用于检索 $ip_addr 的脚本 * ***
<?php
#require_once('auth.php');
$master = fopen('/etc/postfix/master.cf', 'a+');
$id = 'bob';
$ip_addr = '2600:3c01:e000:44:0:0:0:10';
$valid = false;
while (($buffer = file_get_contents('/etc/postfix/master.cf')) !== false) {
if (strpos($buffer,$id) !== false) {
$valid = TRUE;
echo $ip_addr;
break;
}else{
fwrite($master,
"\r\n".$id." unix - - n - - smtp \n
-o syslog_name=postfix-".$id."\n
-o smtp_bind_address6=".$ip_addr."\n"
);
}
echo $ip_addr;
}
fclose($master);
?>
** * ** * ** * ** * *第一个脚本出错* ** * ** * ** * ** *
var_dump($_POST); --> Arrayarray(0) { }
Undefined index: ip_addr
** * ** * ** * ** 注意:* ** * ** * ** * ** * *** 我有另一个脚本,它通过相同的路径恢复统计信息,并且基本上相同的代码可以完美运行。唯一的区别是,我调用的是另一个 php 脚本,而不是调用 pslogsumm。因此,无需应对网络错误或任何奇怪的事情。就好像他们在局域网上一样。
** * ** * ** * *** 更新 ** * ** * ** * ** * * 此命令在命令行上完美运行:
emailer1 cgi-bin # /usr/bin/ssh -p 22 -6 2600:3c01:e000:44::14 '/usr/bin/php /var/www/localhost/cgi-bin/postUser2master.php .ssh'
2600:3c01:e000:44:0:0:0:10emailer1 cgi-bin #
As does this one:
dev-box-201 www # /home/wemail1/cgi-bin/ip_addr_stats
+ ssh -p 22 -6 2600:3c01:e000:44::14 'php /var/www/localhost/cgi-bin/postUser2master.php .ssh'
2600:3c01:e000:44:0:0:0:10dev-box-201 www #
它完美地吐出IP地址。那是我需要但无法达到的价值。