晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /scripts/ |
Upload File : |
#!/usr/local/cpanel/3rdparty/bin/perl
# cpanel - scripts/ipcheck Copyright 2022 cPanel, L.L.C.
# All rights reserved.
# copyright@cpanel.net http://cpanel.net
# This code is subject to the cPanel license. Unauthorized copying is prohibited
use strict;
use warnings;
use Text::Wrap; # Perl core lib module
use Cpanel::SafeRun::Errors ();
use Cpanel::DIp::MainIP ();
use Cpanel::NAT ();
use Cpanel::Binaries ();
use Cpanel::Sys::Hostname ();
use Cpanel::Usage ();
use Cpanel::IP::Loopback ();
use Socket ();
$Text::Wrap::columns = 68;
sub usage {
die <<'EOM';
ipcheck - Report on various error conditions relating to hostname / IP resolution
ipcheck [options]
Options:
--help Brief help message
--test Test email formatting by generating an email with random simulated IP configuration errors
(NOTE: The subject and body of the email will both clearly indicate that it is only a simulation.)
--verbose Even when no problems have been found, tells you so
EOM
}
my $test_mode = 0;
my $verbose = 0;
Cpanel::Usage::wrap_options(
{
# Notice we do not need preference "require_left", because this script
# takes option args *only*, so there is no need to force them to be to
# the left of non-option args. If any non-option args are found, we'll
# detect them and usage() out immediately below.
strict => 1, # allow ONLY the opts specified in hash below
remove => 1, # remove opts from cmd line after processing them
# require_left => 1,
},
\@ARGV,
\&usage,
{
'test' => \$test_mode,
'verbose' => \$verbose,
}
);
# ALL args to this script must be --xxx option args. If any
# other args are left after we've eliminated those, we have a
# problem.
@ARGV && usage();
my $rightip = Cpanel::DIp::MainIP::getmainserverip();
my $hostname = Cpanel::Sys::Hostname::gethostname();
my @problems;
my $wrongip;
my $iaddr;
if ( my $iaddr = gethostbyname($hostname) ) {
my $ip = Socket::inet_ntoa($iaddr);
if ( $ip ne $rightip && !Cpanel::IP::Loopback::is_loopback($ip) ) {
$wrongip = $ip;
push( @problems, 'resolved_to_wrong_ip_msg' );
}
}
else {
#not found by perl builtin
push( @problems, 'host_not_found_msg' );
}
my $host_bin = Cpanel::Binaries::path('host');
if ( !-x $host_bin ) {
push( @problems, 'unable_resolve_no_host_binary_msg' );
}
else {
my $dnsres = Cpanel::SafeRun::Errors::saferunallerrors( $host_bin, $hostname );
if ( !$dnsres || $dnsres =~ /Host not found/i ) {
#not found by linux binary
push( @problems, 'host_not_found_msg' );
}
else {
my ($dns_resip) = $dnsres =~ /(\d+\.\d+\.\d+\.\d+)/;
if ( !$dns_resip ) {
#not found by linux binary
push( @problems, 'host_not_found_msg' );
}
elsif ( Cpanel::NAT::get_local_ip($dns_resip) ne $rightip && !Cpanel::IP::Loopback::is_loopback($dns_resip) ) {
# The check for localhost is for symmetry with first method, above
# (gethostbyname), where we likewise perform these two tests.
push( @problems, 'resolved_to_wrong_ip_msg' );
$wrongip = $dns_resip;
}
}
}
if (@problems) {
require Cpanel::iContact::Class::Check::IP;
print "[ipcheck] sent email! Errors found\n";
require Cpanel::Notify;
Cpanel::Notify::notification_class(
'class' => 'Check::IP',
'application' => 'Check::IP',
'constructor_args' => [
'origin' => $hostname,
'problems' => \@problems,
'right_ip' => $rightip,
'wrong_ip' => $wrongip
]
);
}
else {
if ($verbose) {
print "$0: OK: No IP-related problems have been found.\n";
}
}