小编Eti*_*rot的帖子

解锁时运行脚本?

嘿,我想在KDE 4上每次解锁计算机时运行一个shell脚本.我了解到我可以通过用shell脚本覆盖/ usr/lib/kde4/libexec/krunner_lock来运行它,然后是原始的krunner_lock二进制文件,我基本上想要做相反的事情:启动一个"撤消"锁定脚本所做内容的脚本.我在Kubuntu 9.04 64位上,但我很欣赏任何操作系统的答案,以防我想在该系统上做同样的事情.

bash scripting kde kde4 unlock

5
推荐指数
1
解决办法
2191
查看次数

转义bash函数参数以供su -c使用

我希望能够编写一个su_mt_user(当前)看起来像这样的函数:

su_mt_user() {
    su someuser -c "$*"
}
Run Code Online (Sandbox Code Playgroud)

目标是能够像这样使用它:

su_mt_user mt-auth --stuff etc
Run Code Online (Sandbox Code Playgroud)

哪个会mt-auth --stuff etc以用户身份运行该命令someuser.当前版本适用于此特定命令,但对于以下命令失败:

some_filename_with_spaces="/home/user/hello there i like spaces in filenames.txt"
su_mt_user stat "$some_filename_with_spaces"
Run Code Online (Sandbox Code Playgroud)

此操作失败,并出现以下错误:

stat: cannot stat '/home/user/hello': No such file or directory
stat: cannot stat 'there': No such file or directory
stat: cannot stat 'i': No such file or directory
stat: cannot stat 'like': No such file or directory
stat: cannot stat 'spaces': No such file or directory
stat: cannot …
Run Code Online (Sandbox Code Playgroud)

bash arguments escaping function su

5
推荐指数
1
解决办法
3163
查看次数

Paramiko:从公钥字符串创建 PKey

我正在尝试在低级别使用 SSH 协议(即我不想启动 shell 或任何东西,我只想传递数据)。因此,我Transport直接使用 Paramiko 的课程。

我已经完成了服务器端,但现在我正在为一些愚蠢的事情碰壁。对于客户端连接到服务器,Transportconnect方法将两个PKey对象作为参数:客户端的私钥(pkey)和服务器的公钥(hostkey)。

PKey班被描述为“基类公共密钥”。然而问题是我无法弄清楚如何PKey仅用 ssh 公钥(即 string ssh-whatever AAblablabla)创建这样的对象。它有用私钥构建这样一个对象的方法,但显然我不希望客户端知道服务器的私钥。

我觉得我忽略了一些简单的事情,但我无法在网上找到有关这样做的信息;大多数教程都使用加载系统密钥的更高级别的SSHClientknown_hosts

python ssh paramiko ssh-keys

5
推荐指数
1
解决办法
2630
查看次数

用于查看/修改IP路由规则的Python接口

我正在尝试找到一个Pythonic接口,以了解ip route-style命令在Linux上的作用,类似于python-iptables一个好的Pythonic接口,iptables它直接调用C库函数,而不是subprocess用来调用和解析运行的输出/usr/sbin/iptables.这样的模块存在吗?

如果没有,那么subprocess在Python中执行以下操作的最佳方法(最好不要涉及-parsing):

  • 获取机器的IP路由表
  • 将新规则添加到IP路由表
  • 从IP路由表中删除规则?

python linux ip routing subprocess

5
推荐指数
1
解决办法
4426
查看次数

2
推荐指数
1
解决办法
5125
查看次数

从c共享库访问python ctypes结构

我编写了一个python代码来将ctypes结构传递给c库函数

python代码:

from ctypes import *

class Info(Structure):
   _field_ = [("input",c_int),
              ("out",c_int)]

info = Info()

info.input = c_int(32)
info.out = c_int(121)

lib = CDLL("./sharedLib.so").getVal
a = lib(byref(info))
Run Code Online (Sandbox Code Playgroud)

c代码:

#include <stdio.h>

struct info{
    int input;
    int out;
};

void getVal(struct info *a){
    printf("in = %i \n", a->input);
    printf("out = %i \n", a->out);
}
Run Code Online (Sandbox Code Playgroud)

使用命令编译它: gcc -shared -fPIC -o sharedLib.so sharedLib.c

输出:

in = 0 
out = 0 
Run Code Online (Sandbox Code Playgroud)

我的问题是,为什么输出与我在python代码中设置的值不同.有什么解决方案吗?我在32位环境中

c python ctypes

1
推荐指数
1
解决办法
1406
查看次数