내 hosts.allow 파일에 저장된 IP 주소를 확인하는 데 사용하는 스크립트가 있습니다. 내 IP를 내 dynndns 호스트 이름에 매핑하면 내 서버에 로그인 할 수 있습니다. 호스트 이름. 어떤 이유로 스크립트가 실제로 간헐적 인 문제를 일으키는 것으로 보입니다.방울 문자 교체
#SOme.gotdns.com
sshd : 192.168.0.1
#EOme.gotdns.com
#SOme2.gotdns.com
sshd : 192.168.0.2
#EOme2.gotdns.com
내가 스크립트 크론에서 실행이 (분당) 다음과 같습니다 :
#!/usr/bin/php
<?php
$hosts = array('me.gotdns.com','me2.gotdns.com');
foreach($hosts as $host)
{
$ip = gethostbyname($host);
$replaceWith = "#SO".$host."\nsshd : ".$ip."\n#EO".$host;
$filename = '/etc/hosts.allow';
$handle = fopen($filename,'r');
$contents = fread($handle, filesize($filename));
fclose($handle);
if (preg_match('/#SO'.$host.'(.*?)#EO'.$host.'/si', $contents, $regs))
{
$result = $regs[0];
}
if($result != $replaceWith)
{
$newcontents = str_replace($result,$replaceWith,$contents);
$handle = fopen($filename,'w');
if (fwrite($handle, $newcontents) === FALSE) {
}
fclose($handle);
}
}
?>
문제를 내 hosts.allow에 파일 내에서
나는이 같은 섹션이 나는 그 간헐적으로 문자가 떨어지고있다 (나는 교체하는 동안 가정한다)는 다음과 같은 것을 삽입 할 때 실패 할 미래의 업데이트를 일으킨다 :
물론 이것은 내가 서버에 액세스 할 수 없게 의미"s.com"실종210
노트, 어떤 아이디어가 왜 이런 일이 일어나고 있을까?
감사합니다.
입니까? – RageZ
첫 번째 인스턴스가 완료되기 전에 다시 실행되는 동일한 스크립트를 의미합니까? – robjmills
예 스크립트가 읽기 및 쓰기에 동일한 파일을 사용하고 있으므로 두 프로세스가 동시에 실행되면 재미있는 결과가 발생할 수 있습니다. – RageZ