Unix & Linux

Linux,FreeBSD和其他类似Un * x的操作系统用户的问答

2
在外壳上进行JSON解析
如何解析Shell上的JSON输出? 例如,Amazon Web Services提供了一个CLI来检索实例的状态: $ aws ec2 describe-instances <my_instance_id> 但是该命令返回JSON字符串。该命令的输出如下所示: $ aws ec2 describe-instances x12345 { "Reservations" : { "OwnerId": "1345345" "Groups": [], "SecurityGroups": [ { "Foo" : "yes" "Bar" : "no } ] } } 是否有可用于解析JSON输出的shell内置程序? 例如,我想在shell变量中捕获FOO以下内容output["Reservations"]["SecurityGroups"][0]{"Foo"}。 如果有帮助,我对Zsh可能适用的解决方案特别感兴趣。
11 zsh  string  json 

1
是否可以不通过/ sys获得网络接口索引?
所以我要寻找的是接口索引(或名称),但真正的索引。 if_nametoindex(3)并且ioctl(2)似乎没有帮助我在这里。现在,我找到方法的唯一方法是通过/sys。让我在示例中演示我需要什么: # cat /sys/class/net/bond0.1007/ifindex 26 # cat /sys/class/net/bond0.1007/iflink 23 <-- I need either this or a reference to bond0 # cat /sys/class/net/bond0/ifindex 23 有没有办法通过函数调用做到这一点,或者唯一的方法是sysfs?

4
如何通过nmcli连接到802.1x无线网络
我能够通过nm-applet连接到802.1网络。我不喜欢这样做,因为我大多数时候都没有nm的情况下运行,因此我不想加载一个只是为了连接到无线网络。 连接到802.1网络时,出现以下错误: Error: Failed to add/activate new connection: (32) Failed to determine AP security information 我不知道如何解决此问题,因为nmcli似乎没有提供任何指定网络类型的方法。

1
为tcpdump捕获创建多播联接
我想编写一个Linux Shell脚本来捕获特定的多播流量。具体来说,我想创建一个pcap文件,其中包含一个特定多播组/端口的所有流量。 这是我用来查看流量的命令行: tcpdump -nnXs 0 -i eth1 udp port 22001 and dst 233.54.12.234 只要我已经建立了对该组的多播订阅,就可以正常工作。例如,如果我在另一个控制台中运行此命令: mdump 233.54.12.234 22001 10.13.252.51 tcpdump将看到数据包。如果mdump没有运行,tcpdump什么也看不到。 在开始捕获之前,是否有标准的linux-y方法来建立这些多播联接?我可以mdump用来建立这些联接,但这似乎很浪费,因为mdump它将处理组中的所有数据,但是我只是将其丢弃。 请注意,由于我的特定环境,我们不建议将接口置于混杂模式。实际上,它可能被禁止。


2
了解网络摄像头的Linux设备驱动程序
据我所知,设备驱动程序是SW的一部分,能够与连接到计算机的特定类型的设备进行通信。 对于USB网络摄像头,负责的驱动程序是UVC,它支持任何兼容UVC的设备。这意味着可以使OS或其他计算机程序访问硬件功能,而无需知道所使用硬件的确切细节。 因此,我通过运行以下命令安装了UVC Linux设备驱动程序: opkg install kernel-module-uvcvideo 网络摄像头已被Linux内核识别:dev/video0。但是,由于缺少V4L2 API,我仍然无法使用FFmpeg执行视频流。我通过配置内核安装了V4L2。 我的查询是: UVC驱动程序和V4L2如何链接在一起? V4L2 API的目的是什么? 如果我没有首先安装UVC,它将与V4L2一起安装吗? LinuxTV是指:uvcvideo驱动程序实现仅遵守V4L2 API。这意味着UVC是V4L2 API的一部分吗?
11 linux  drivers  camera  v4l 

4
在CentOS 6.5上安装OpenSSL共享库
OS: CentOS-6.5-x86_64-minimal 我下载了最新版本的OpenSSL 用它提取 tar -xvzf openssl-1.0.1e.tar.gz cd openssl-1.0.1e ./config --prefix=/usr/local make 它给了我以下错误: making all in crypto... make[1]: Entering directory `/usr/local/src/openssl-1.0.1e/crypto' making all in crypto/objects... make[2]: Entering directory `/usr/local/src/openssl-1.0.1e/crypto/objects' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/usr/local/src/openssl-1.0.1e/crypto/objects' making all in crypto/md4... make[2]: Entering directory `/usr/local/src/openssl-1.0.1e/crypto/md4' make[2]: Nothing …
11 centos  yum  openssl 


5
移动驻留在单个目录中的大量文件的最有效方法是什么?
CentOS 5.x 如果这是一个重复的问题,我深表歉意。我见过很多类似的问题(关于删除文件),但情况并不完全相同。 我有一个包含成千上万个文件的目录(可能超过一百万个),作为对一个不同问题的短期修复,我需要将这些文件移动到另一个位置。 为了讨论的目的,假设这些文件最初位于其中/home/foo/bulk/,我想将它们移至/home/foo2/bulk2/ 如果尝试mv /home/foo/bulk/* /home/foo2/bulk2/ ,会出现“参数过多”错误。 Google先生告诉我,批量删除文件的另一种方法是运行find。就像是: find . -name "*.pdf" -maxdepth 1 -print0 | xargs -0 rm 如果我要删除内容,那很好,但是在这种情况下,我想移动文件...如果我输入类似find . -name "*" -maxdepth 1 -print0 | xargs -0 mv /home/foo2/bulk2/bash的内容,则抱怨该文件不是目录。 在此处将批量文件从一个目录移动到另一个目录的最佳命令是什么?
11 linux  bash  shell  find  rename 

5
.ssh / config在zsh中启动远程会话
我想在不键入以下命令的情况下启动远程会话 ssh user@remoteserverip -t zsh 我知道我可以更改中的主机名~/.ssh/config以简单地使用如下代码: ssh serveralias -t zsh 但是我想删除该-t zsh参数。 有没有无需编写函数就能实现的方法?
11 ssh  zsh  remote  session 

2
如何在ssh命令中禁用重试密码
我希望ssh命令只允许一次输入密码,如果第一次输入密码错误,ssh将返回 Permission denied (publickey......). 是否有一个标志告诉ssh仅请求一次密码? 代替: [nir@dhcppc4 ~]$ ssh pokemon@192.168.1.103 pokemon@192.168.1.103's password: Permission denied, please try again. pokemon@192.168.1.103's password: Permission denied, please try again. pokemon@192.168.1.103's password: Permission denied (publickey.....). 我想要: [nir@dhcppc4 ~]$ ssh pokemon@192.168.1.103 pokemon@192.168.1.103's password: Permission denied (publickey.....). 解决方案必须在客户端(例如ssh命令的某些标志或使用管道),我无法触摸sshd_config或任何其他系统配置文件。因为-通常-我构建了访问LAN中服务器的第三方软件(因此我无法生成密钥或配置系统文件),所以密码保存在DB中(因此无需再次尝试)。并且在我的代码中,如果我能够假设自己只有一次尝试ssh/ scp将简化相关代码。
11 ssh  password  scp 

2
强制Bash使用Perl RegEx Engine
您可能已经知道,Bash RegEx引擎不支持现代RegEx引擎支持的许多功能(向后引用,环视断言等)。以下是我刚刚创建的一个简单的Bash脚本,试图解释我的最终目标是: #!/bin/bash # Make sure exactly two arguments are passed. if [ $# -lt 2 ] then echo "Usage: match [string] [pattern]" return fi variable=${1} pattern=${2} if [[ ${variable} =~ ${pattern} ]] then echo "true" else echo "false" fi 因此,例如,类似以下命令的内容将返回false: . match.sh "catfish" "(?=catfish)fish" 而在Perl或JavaScript正则表达式测试器中使用时,完全相同的表达式将找到匹配项。 反向引用(例如(expr1)(expr2)[] \ 1 \ …

1
倾向于安装比指定的软件包更多的软件包
我试图texmaker从存储库安装。为了进行安装,texlive我遵循此处描述的步骤。为此,我使用的控制文件是this。它包含文件texlive-binaries。 然后我试图安装texmaker的apt。它的依赖项列为 # apt-cache depends texmaker texmaker Depends: libc6 Depends: libgcc1 Depends: libpoppler-qt4-3 Depends: libqt4-network Depends: libqt4-xml Depends: libqtcore4 Depends: libqtgui4 Depends: libqtwebkit4 Depends: libstdc++6 Depends: zlib1g Depends: texmaker-data Recommends: aspell Recommends: ghostscript Recommends: netpbm Recommends: psutils texlive-local Recommends: texlive-latex-extra texlive-local |Recommends: <hunspell-dictionary> myspell-fr myspell-ru hunspell-an hunspell-ar hunspell-be hunspell-da hunspell-de-at …
11 debian  apt  latex 

3
Unix邮件命令不发送电子邮件
我在尝试使用unix mail命令发送电子邮件时遇到麻烦。目前,我正在尝试: echo "something" | mail -s "test mail" email@address.com 但是,当我查看电子邮件时,仍未收到。 我该如何运作?我正在使用Mac OS X 10.7
11 osx  email 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.