Tag: linux

使用脚本自动inputSSH密码

我需要创build一个自动input密码给OpenSSH ssh客户端的脚本。 假设我需要使用密码a1234b进入myname@somehost SSH。 我已经试过了… #~/bin/myssh.sh ssh myname@somehost a1234b …但这不起作用。 我怎样才能得到这个function到脚本?

如何知道'errno'是什么意思?

当调用execl(…) ,我得到一个errno=2 。 这是什么意思? 我怎么知道这个errno的含义?

在Unix命令行中从文件中读取随机行的简单方法是什么?

在Unix命令行中从文件中读取随机行的简单方法是什么?

使用命令行在gnome-terminal中打开一个新选项卡

当我写 gnome-terminal –tab 在terminal,我希望它在同一个terminal窗口中打开一个新的标签。 但它会打开一个新窗口。 我发现它的目的是在新窗口中打开一个新的标签,也就是说,如果我写的话 gnome-terminal –tab –tab 它将打开一个带有两个选项卡的新窗口。 所以,问题是,如何使用gnome-terminal的命令在当前窗口中打开新选项卡? 我使用的是Ubuntu 9.04 x64。

在Ubuntu中使$ JAVA_HOME变得容易变长

在Ubuntu中,我想在Java 5和6之间来回切换JAVA_HOME环境variables。 我打开一个terminal并input以下内容来设置JAVA_HOME环境variables: export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun 在同一个terminal窗口中,input以下内容来检查环境variables是否已经更新: echo $JAVA_HOME 我看到/usr/lib/jvm/java-1.5.0-sun ,这是我期待看到的。 另外,我修改〜/ .profile并将JAVA_HOME环境variables设置为/usr/lib/jvm/java-1.5.0-sun。 现在的问题 – 当我打开一个新的terminal窗口,我通过inputecho $ JAVA_HOME来检查我的JAVA_HOME环境variables,我看到我的JAVA_HOME环境variables已经恢复到Java 6.当我重新启动我的机器(或日志我想)JAVA_HOME环境variables设置为Java 5(大概是因为在我的〜/ .profile中所做的修改)。 有没有解决方法,以便我可以更改我的JAVA_HOME环境,而不必注销并返回(并使所有新的terminal窗口中的环境variables更改棒 )?

Python中的open()不会创build文件,如果它不存在

如果文件存在,或者如果不存在,将文件打开为读/写的最佳方式是什么?然后创build并以读/写方式打开文件? 从我读的file = open('myfile.dat', 'rw')应该这样做,对吧? 它不适合我(Python 2.6.2),我想知道是否是版本问题,或不应该这样或那样的工作。 底线是,我只需要一个问题的解决scheme。 我对其他的东西很好奇,但是我需要的只是做开幕式的一个好方法。 更新:封闭的目录是可写的用户和组,而不是其他(我在Linux系统…所以权限775换句话说),确切的错误是: IOError:没有这样的文件或目录。

使用linux控制USB电源(开/关)

用linux手动打开/closuresUSB电源是否可行? 有这个外部的USB散热风扇(你用来冷却自己,而不是电脑),并且能够从terminal控制它是很好的,因为我想把风扇放在很远的地方。 我想这也可以用于各种其他的事情,因为那里有很多的USB玩具。 也许空气净化器等(我听说他们并没有真正的工作)。

如何打印ld(链接器)searchpath

打印ld所search的searchpath的方法是什么?

如何在Linux上find所有串口设备(ttyS,ttyUSB,..)而不打开它们?

在Linux系统上获取所有可用串行端口/设备列表的正确方法是什么? 换句话说,当我遍历/dev/所有设备时,如何以经典的方式告诉哪些设备是串行端口,即那些通常支持波特率和RTS / CTSstream量控制的设备? 解决scheme将用C编码 我问,因为我正在使用一个明显错误的第三方库:它似乎只遍历/dev/ttyS* 。 问题是,例如,通过USB(由USB-RS232适配器提供)的串行端口,并列在/ dev / ttyUSB *下。 在Linux.org上阅读Serial-HOWTO ,随着时间的推移 ,我发现还会有其他的命名空间。 所以我需要find官方的方式来检测串行设备。 问题是,似乎没有logging,或者我找不到它。 我想一种方法是打开/dev/tty*所有文件,然后调用它们的特定ioctl() ,它们只能在串行设备上使用。 那会是一个很好的解决scheme吗? 更新 hrickardsbuild议查看“setserial”的来源。 它的代码完全符合我的想法: 首先,它打开一个设备: fd = open (path, O_RDWR | O_NONBLOCK) 然后它调用: ioctl (fd, TIOCGSERIAL, &serinfo) 如果这个调用没有返回错误,那么显然它是一个串行设备。 我在Serial Programming / termios中发现了类似的代码,这个代码还build议添加O_NOCTTY选项。 但是,这种方法有一个问题: 当我在BSD Unix(也就是Mac OS X)上testing这个代码时,它也起作用了。 但是 ,通过蓝牙提供的串行设备会导致系统(驱动程序)尝试连接到蓝牙设备,这需要一段时间,然后才会返回超时错误。 这是由于打开设备造成的。 我可以想象在Linux上也会发生类似的事情 – 理想情况下,我不需要打开设备来确定它的types。 我想知道是否还有一种方法可以在不打开的情况下调用ioctl函数,或者打开一个不会导致连接的设备? 我该怎么办?

UnicodeDecodeError:'utf8'编解码器无法解码字节0x9c

我有一个应该从客户端接收UTF-8有效字符的套接字服务器。 问题是一些客户端(主要是黑客)正在发送所有错误的数据。 我可以很容易区分真正的客户端,但是我正在logging所有发送的数据,以便日后分析。 有时我会得到像这样的字符œ导致UnicodeDecodeError错误。 我需要能够使stringUTF-8有或没有这些字符。 更新: 对于我的特殊情况,套接字服务是MTA,因此我只希望接收ASCII命令,例如: EHLO example.com MAIL FROM: <john.doe@example.com> … 我在JSON中logging所有这一切。 然后一些没有好意的人决定出售各种垃圾。 这就是为什么对于我的具体情况,剥离非ASCII字符是完全正确的。