事实证明,iptables不能很好地处理前导零.由于$machinenumber
使用它必须在其中有一个前导零用于其他目的,这个想法只是创建一个新的变量($nozero
)$machinenumber
,其中前导零被剥离.
$machinenumber
是01到24之间的两位数.目前是09
$machinetype
现在是74,并没有造成任何问题.
到目前为止我所拥有的是:
nozero = (echo $machinenumber | sed 's/^0*//')
iptables -t nat -I POSTROUTING -s 10.($machinetype).($nozero).0/24 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)
虽然我相信我走在正确的轨道上,但代码导致:
ERROR - Unknown string operation
Run Code Online (Sandbox Code Playgroud) 我有很多脚本,其中大部分都是基于WWW::Mechanize
可以通过HTTP访问的misc硬件中的数据.在升级我的大多数perl安装及其模块之后,使用HTTPS://的所有脚本都因为而破坏了"certificate verify failed"
这是因为较新版本的LWP对证书进行了适当的检查以及 dies
是否存在不匹配的事实.
在我的情况下,由于情况,预计失败的证书认证,所以我需要找到一种干净地绕过这种检查的方法.
标题几乎总结了,但无论如何这里是长版本.
在发布了一小段perl代码之后,我被告知要避免使用间接对象表示法,"因为它有几个副作用".评论引用了这一特定的行:
my $some_object = new Some::Module(FIELD => 'value');
Run Code Online (Sandbox Code Playgroud)
因为这就是我一直以来的做法,为了与时俱进,我因此问:
我正要问这位评论者,但对我而言,这是值得发表的.
目的是让程序拦截一组IP数据包并读取其原始内容,然后在修改之后将其重新插入网络.
我的方法是基于设置Tuntap接口(Tun,具体),然后让iptables和类似的方法将所需的数据包重定向到这个隧道接口.
出于测试目的,我编写了这个简短的shell脚本来设置Tun接口并添加所需的规则.现在,我打算在我的本地机器发送的任何数据包上测试它,目的地为123.123.123.123
.这是启动脚本:
# Set up the tunnel
ip tuntap add dev maintun mode tun
ifconfig maintun inet 10.10.10.1 netmask 255.255.255.0 up
# Mark packets for forwarding to tun
iptables -t mangle -A PREROUTING -d 123.123.123.123 -j MARK --set-mark 2
# Apply ClientRouter table to mark 2 as it's defined in /etc/iproute2/rt_tables
# 201 ClientRouter
ip rule add fwmark 2 table ClientRouter
# Apply gw if to ClienRouter
ip route add default via 10.10.10.1 dev maintun table ClientRouter …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将Lisp作为我的新语言,并且我遇到了一些问题,如何让函数的各个部分对传递给它的列表的每个元素起作用.
为了学习如何解决这个问题,我试图编写一个相当基本的除法形式,当列表中的一个元素为0时(但只返回0),它不会呱呱叫
(defun divtest (elements)
(dolist (x elements)
(if (zerop x) 0 () )
(/ elements)))))
Run Code Online (Sandbox Code Playgroud)
我尝试将其运行为:
(divtest '(20 2 5))
Run Code Online (Sandbox Code Playgroud)
产量:
*** - /: (20 2 5) is not a number
Run Code Online (Sandbox Code Playgroud)
故障点似乎根源于这样一个事实:我没有在提取列表中的元素之前将它们传递给函数(在这种情况下,既没有/也没有dolist按预期工作,因为x从未计算为0).如果我是对的,有人可以告诉我如何进行这种"提取"吗?
注意:这个问题与我之前提到过的问题有关,但由于我不清楚之前答案的哪一部分实际上允许它按照预期的具体问题工作,我决定进一步深入了解基础知识
我有一个perl脚本,当有点蒸馏时,看起来像这样:
my $randport = int(10000 + rand(1000)); # Random port as other scripts like this run at the same time
my $localip = '192.168.100.' . ($port - 4000); # Don't ask... backwards compatibility
system("ssh -NL $randport:$localip:23 root\@$ip -o ConnectTimeout=60 -i somekey &"); # create the tunnel in the background
sleep 10; # Give the tunnel some time to come up
# Create the telnet object
my $telnet = new Net::Telnet(
Timeout => 10,
Host => 'localhost',
Port => $randport,
Telnetmode …
Run Code Online (Sandbox Code Playgroud) 我已经整理了一个perl脚本,通过Linux :: TunTap将数据包读入用户空间,这一切似乎都运行良好:
#!/usr/bin/perl
use warnings;
use strict;
use Linux::TunTap;
$tun = new Linux::TunTap(NAME => 'localtun')
or die "Couldn't connect to IF\n";
while (my $packet = $tun->get_raw()) {
print Dumper($packet);
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是:如何将表示从tntap设备读取的原始IP数据包的字符串转换为适当的数据结构进行处理?特别是我在源,目的地和序列号之后.
显然,原始IP数据包的原始格式不是很易读.这是通过tuntap接口发送ping后的输出:
{{{?}/??8V?| !"#$%&'()*+,-./0123456ET??@@4
如何从此处继续以编程方式处理此数据?
使用postgresql 8.4,我正在尝试编写一个函数,它看起来像这样:
CREATE OR REPLACE FUNCTION addorupdate( smallint, varchar(7) ) RETURNS void AS
$$
BEGIN
IF EXISTS (SELECT * FROM consist WHERE slave = $1) THEN
UPDATE consist SET
master = $2
where slave = $1;
ELSE
INSERT INTO consist(slave, master) VALUES ( $2, $1 );
END IF;
END;
$$
LANGUAGE SQL;
Run Code Online (Sandbox Code Playgroud)
但是,它失败了:
ERROR: syntax error at or near "IF"
LINE 4: IF EXISTS (SELECT * FROM consist WHERE slave = $1) THEN
Run Code Online (Sandbox Code Playgroud)
...而且我一直在浪费太多的时间和咖啡因来弄清楚为什么并且可以用新鲜的眼睛来帮助我.
如果我不清楚我想要实现什么:奴隶是一列独特的价值观.如果存在,请使用当前主服务器更新它.如果没有,请插入.
更新: 将语言更改为plpgsql,现在抛出:
ERROR: language "plpgsql" …
Run Code Online (Sandbox Code Playgroud) 我正在开发这款具有World
. 这World
里面有很多Units
。
问题源于World
服务(除其他外)两个主要任务的事实:
Unit
以便他们可以根据过去的时间更新他们的属性。Unit
。在World
,发生这种情况:
for (Actor a : stage.getActors())
{
a.draw(batch, 1);
a.act(10);
findTargets((Unit)a);
}
Run Code Online (Sandbox Code Playgroud)
findTargets() 定义如下:
public ArrayList<Unit> findTargets(Unit source) {
double sight = source.SIGHT;
ArrayList<Unit> targets = new ArrayList<Unit>();
for (Actor a : stage.getActors()) {
Unit target = (Unit)a;
if (!(target instanceof Unit))
continue;
if (target.equals(source)) continue;
if (((Unit)target).getPos().dst(source.getPos()) < sight) {
targets.add((Unit)target);
}
}
return targets;
}
Run Code Online (Sandbox Code Playgroud)
问题很明显:findTargets()
还会迭代每个单元,导致嵌套迭代。但是,我不确定我应该如何继续“取消嵌套”这个,因为我只看到了一个问题 22:每个单元实际上都必须迭代每个其他单元以查看它们是否在它们的范围内视线范围。 …
所以,我有一个大约有150万行的表,看起来有点像这样:
name | time | data1 | data2
--------------------------------------
93-15 | 1337348782 | 11 | 60.791
92-02 | 1337348783 | 11 | 62.584
92-02 | 1337348056 | 11 | 63.281
93-15 | 1337348068 | 8 | 65.849
92-02 | 1337348117 | 11 | 63.271
93-15 | 1337348129 | 8 | 65.849
92-02 | 1337348176 | 10 | 63.258
93-15 | 1337348188 | 8 | 65.849
92-02 | 1337348238 | 10 | 63.245
93-15 | 1337348248 | 8 | 65.849
Run Code Online (Sandbox Code Playgroud)
...这些对应于需要监控的事物的历史状态更新.现在,我想做的是找到每个单位的当前状态. …
我有很多东西(让我们把它们称为节点......没关系),方便地称为node1,node2,... nodeN.
棘手的部分是我需要一个perl子程序,它接受一个引用一组节点的整数.我的方法是:
每个节点都有一个基于2的幂的值,如下所示:
将每个节点的值相加以生成整数.例如,节点1,3,4和7导致整数为77.
现在,我将如何创建一个采用类似整数的子程序并返回一个节点数组?
PS:
我在尝试将数据插入表中时遇到奇怪的错误,同时处理从不同表中获取的数据:
DBI::st=HASH(0x56261b345948)->_prepare(...): attribute parameter '0' is not a hash ref at /usr/lib/x86_64-linux-gnu/perl5/5.24/DBD/Pg.pm line 277.
Run Code Online (Sandbox Code Playgroud)
似乎导致它的行是上面代码片段中的$ dbh-> do():
my $sth = $dbh->prepare(
"SELECT (name, model), serial, firmware, timestamp FROM devicelog
WHERE id = $id AND fleet = $fleet AND timestamp >
(SELECT timestamp FROM devicelog WHERE fleet = $fleet AND id = $id ORDER BY timestamp DESC LIMIT 1)
- INTERVAL '50 seconds'"
);
$sth->execute();
while (my @row = $sth->fetchrow_array())
{
if (param('savetemplate'))
{
$dbh->do('INSERT INTO template (fleet, id, name, model, …
Run Code Online (Sandbox Code Playgroud) perl ×7
linux ×3
postgresql ×3
sql ×2
bash ×1
coding-style ×1
common-lisp ×1
dbi ×1
iptables ×1
iteration ×1
java ×1
libgdx ×1
lisp ×1
lwp ×1
oop ×1
performance ×1
perl5 ×1
plpgsql ×1
shell ×1
ssh-tunnel ×1
strip ×1
subroutine ×1
syntax-error ×1
tcp-ip ×1
telnet ×1
triggers ×1
tun ×1
tunnel ×1