小编Osc*_*vis的帖子

如何获取运行docker容器的IP地址

我正在使用Docker for Mac,我在docker容器中运行基于nodejs的微服务.我想通过浏览器测试节点微服务.如何获取运行docker容器的IP地址?

containers docker docker-for-mac

73
推荐指数
5
解决办法
15万
查看次数

如何将 USB 无线接口连接到 Mac OS X 上的 Docker 容器?

我有一个 Linux Docker 容器,它需要一个无线接口才能工作。在 Linux 上(在 Linux 主机上运行它)我没有问题。

带参数运行泊坞窗容器--privileged--net=host我可以访问该主机的无线接口,并没有任何问题,我可以管理它们。问题是当我在 Mac OS X 主机上运行相同的 Linux Docker 容器时。我看不到 Docker 容器内的无线接口。

这是 Mac OS X v10.12 (Sierra) 主机上 ifconfig 的输出:

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
    options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
    inet 127.0.0.1 netmask 0xff000000
    inet6 ::1 prefixlen 128
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
    nd6 options=201<PERFORMNUD,DAD>
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=b<RXCSUM,TXCSUM,VLAN_HWTAGGING>
    ether 00:0c:29:fe:78:07
    inet6 fe80::8ff:62ac:e141:5aa9%en0 prefixlen 64 secured scopeid 0x4
    inet 192.168.0.153 netmask 0xffffff00 broadcast 192.168.0.255 …
Run Code Online (Sandbox Code Playgroud)

linux macos containers network-interface docker

7
推荐指数
0
解决办法
973
查看次数

击.最快速有效的阵列搜索

我需要在bash过程中进行数组搜索这么多次.我需要知道什么是最快速有效的方法.我知道该怎么做.问题的关键是如何以最快的方式做到这一点.现在,我正在这样做:

#!/bin/bash

array_test=("text1" "text2" "text3" "text4" "text5")
text_to_search="text4"

START=$(date +%s.%N)

for item in "${array_test[@]}"; do
    if [ ${item} = "${text_to_search}" ]; then
        echo "found!!"
        break
    fi
done

END=$(date +%s.%N)
DIFF=$(echo "$END - $START" | bc)
echo $DIFF
Run Code Online (Sandbox Code Playgroud)

使用此代码,我们可以测量时间.

想象一下,我们在阵列中有300个或更多项目.有更快的方法吗?我需要提高性能.谢谢.

编辑我正在使用bash 4.2.真正的数组有换行符:

array_test=(
"text1"
"text2"
"text3"
"text4"
"text5"
)
Run Code Online (Sandbox Code Playgroud)

arrays bash performance search

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

Python。检查索引是否存在于可能的字典列表中

我有这个:

list_name = [0, 1, 2, 3]
list_name[0] = {}
list_name[0]['test'] = 'any value'
Run Code Online (Sandbox Code Playgroud)

我想知道列表中的某个键是否存在。通常我使用:

if 3 not in list_name:
    print("this doesn't exist")
else:
    print("exists")
Run Code Online (Sandbox Code Playgroud)

例如,对 3 号进行测试是有效的。它说“存在”。如果我检查号码 999 是否有效,它会说“这个不存在”。

问题是它不适用于 0。如您所见,列表中的 0 值有一个字典。我需要检查列表中是否存在 0 (不管它是否有字典)。如何实现这一目标?使用python3,谢谢。

python arrays dictionary list python-3.x

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

在 cmd 完成之前,tee 输出不会出现

通常,如果我想打印命令的输出,并在文件中捕获该输出,tee就是解决方案。但我正在使用一个似乎有特殊行为的实用程序制作一个脚本。它就是wps无线评估工具bully

如果我正常运行 bully 命令(不带 tee),输出将以标准方式逐步显示。但是,如果我将管道放在末尾这样进行记录,| tee "/path/to/my/logfile"屏幕上的输出就会冻结。在命令结束之前它什么也不显示。结束后,它一次性显示所有内容(不是一步一步),当然它也将输出放入日志 tee 文件中。

bully 命令的示例:bully wlan0mon -b 00:11:22:33:44:55 -c 8 -L -F -B -v 3 -p 12345670 | tee /root/Desktop/log.txt

为什么?不确定这是否只发生在恶霸身上,或者是否还有其他程序具有相同的行为。

是否有另一种方法可以将输出捕获到实时在屏幕上显示输出的文件中?

bash wireless capture tee output

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

Bash 陷阱、捕获并将它们作为同一函数的参数传递

我正在开发一个管理一些陷阱的脚本。一开始我只用这段代码管理 INT 和 SIGTSTP,它运行得很好:

#!/bin/bash
function capture_traps() {
    echo -e "\nDoing something on exit"
    exit 1
}

trap capture_traps INT
trap capture_traps SIGTSTP
read -p "Script do its stuff here and we use read for the example we pause for time to generate trap event"
exit 0
Run Code Online (Sandbox Code Playgroud)

然后我尝试添加我想要管理的新陷阱,即 SIGINT 和 SIGHUP。首先,我这样做了(这是有效的):

#!/bin/bash
function capture_traps() {
    echo -e "\nDoing something on exit"
    exit 1
}

trap capture_traps INT
trap capture_traps SIGTSTP
trap capture_traps SIGINT
trap capture_traps SIGHUP
read -p "Script do …
Run Code Online (Sandbox Code Playgroud)

bash bash-trap

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

击。生成随机的MAC地址(单播)

我需要在不使用macchanger或类似工具的情况下,在bash中生成随机的mac地址。

我有这个:

random_mac=$(hexdump -n6 -e '/1 ":%02X"' /dev/random | sed s/^://g)
Run Code Online (Sandbox Code Playgroud)

但是有时候,如果您尝试将Mac放入界面,它会说SIOCSIFHWADDR: Cannot assign requested address。我对此进行了调查,似乎与单播地址有关。我有一个解决方法:

random_mac=00:$(cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 200 | md5sum | sed -r 's/^(.{10}).*$/\1/;s/([0-9a-f]{2})/\1:/g; s/:$//;')
Run Code Online (Sandbox Code Playgroud)

但是我不太喜欢这个,因为它不是完全随机的。它始终00是一开始的。

任何已知的bash随机mac生成器都适合单播规则吗?

我阅读使用其他方法od。我想以较少的工具,可以使用具有较小的requeriments运行该脚本。没有可以做od?还是od绝对总是包含在所有Linux发行版中?如果是的话,我可以用它。

random bash mac-address generator

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

Bash中不区分大小写的正则表达式

我想知道哪种方法更好地检查var(由用户在键盘上输入)是否以不区分大小写的方式与正则表达式匹配。我知道有一些不同的可能性。例如:我想一个正则表达式匹配一个空值,而这一切的名单:YNynYesNoYESNO

我搜索了不同的方法。不知道是否会更好。我会把其中的一些给我工作。

  • 第一个是将所有内容都设置为大写的“ tricky”设置,以进行比较:

    #!/bin/bash
    yesno="null" #any different value for initialization is valid
    while [[ ! ${yesno^^} =~ ^[YN]$|^YES$|^NO$|^$ ]]; do
        read -r yesno
    done
    
    Run Code Online (Sandbox Code Playgroud)
  • 第二个是使用shopt -s nocasematch。但是不确定这样做之后是否可以还原,因为我不想为所有脚本设置它。

    #!/bin/bash
    yesno="null" #any different value for initialization is valid
    shopt -s nocasematch
    while [[ ! ${yesno} =~ ^[yn]$|^yes$|^no$|^$ ]]; do
        read -r yesno
    done
    
    Run Code Online (Sandbox Code Playgroud)

这些正则表达式能否以任何方式得到改进?有没有更好(更优雅)的方法?在第二种方法上,有没有办法还原该设置?

regex bash case-insensitive

4
推荐指数
2
解决办法
3037
查看次数

将xserver添加到Docker容器中(主机是无头的)

我正在构建一个具有 Maven 和一些依赖项的 Docker 容器。然后它在容器内执行脚本。看起来,其中一个依赖项需要 Xserver 才能工作。屏幕上没有显示任何内容,但这似乎是必要且无法避免的。

我让它工作了,ENV DISPLAY=x.x.x.x:0在 Dockerfile 上放置了一个,它连接到外部 Xserver 并且它工作了。但重点是让 Docker 成为一个自给自足的容器。

因此,我需要将 Xserver 添加到我的容器中,并在 Dockerfile 中添加必要的内容。我希望 Xserver 只能由 Docker 容器本身访问,而不能从外部访问。

FROM我的 Dockerfile 的 是不可FROM ubuntu:15.04更改的,因为我的 Dockerfile 有很多内容取决于该特定版本。

我读过一些关于如何从 docker 容器连接到 Docker 主机的 Xserver 的文章,如下所示。但正如我提出问题的标题一样,Docker 主机是无头的,并且没有 Xserver。

  • apt-get要安装到容器中才能拥有 Xserver,最少需要安装哪些软件包?
  • 我想在我的 Dockerfile 中将需要显示环境变量,例如ENV DISPLAY=:0. 它是否正确?
  • 命令中还需要添加什么吗docker run

谢谢。

containers headless xserver docker

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

猛击。awk 最后一列可能有空格

我有一个动态输出。有时像这样:

F8:XX:94:XX:C2:XX    1    39%     No    ANY_NAME
A2:XX:34:XX:E8:XX    6    42%     Yes    ANY_OTHER_NAME
D1:XX:78:XX:A1:XX    6    24%     No    MORESTUFF
Run Code Online (Sandbox Code Playgroud)

或者像其他时候这样:

F8:XX:94:XX:C2:XX    1    433     39%     No    ANY NAME
A2:XX:34:XX:E8:XX    6    232     42%     No    ANY_OTHER_NAME
D1:XX:78:XX:A1:XX    6    112     22%     Yes    MORE STUFF
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,最后一列是我想要的,但它可以包含空格或不包含空格,并且列数是动态的。

我需要始终捕获最后一列的值,以防没有空格或有多个空格。有时,列号也是动态的,但我想要的数据始终位于最后一个有空格或没有空格的位置。此数据之前的列始终是“是”或“否”(不确定这是否有帮助)。

有没有办法用 awk 来做到这一点?这就是我实际拥有的:

myvar=$(echo "${line}" | awk '{print $NF}')
Run Code Online (Sandbox Code Playgroud)

但这样做只是获取空格后的最后一部分,而不是完整的数据。因此,只有当数据没有空格时,这才有效。

我想要的是始终获得最后的数据及其空格,以防包含它们。有什么帮助吗?

bash awk

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

猛击。返回两个函数级别(两个嵌套调用)

我需要知道 Bash 是否有针对我的情况的解决方案。我需要在某些条件后进行“双重回报”。我的意思是,执行函数的返回并返回父函数以跳过该父函数的其余代码。

我知道我可以使用函数返回值进行条件操作来实现此目的。但我想知道 Bash 中是否存在类似“break 2”的函数。如果可能的话,我不想修改父函数的代码,因为正如你可以想象的,在我的真实脚本中有几十个函数,我不想修改所有函数。

例子:

#!/bin/bash

function sublevelone() {
    echo "sublevelone"
    # Return 2, or break 2 or something :D
}

function main() {
    sublevelone
    echo "This is the part of the code to being avoid executed"
}

main
Run Code Online (Sandbox Code Playgroud)

bash nested function-call

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

类型错误:this.ExportDataObject 不是函数

我有一个包含嵌入文件 (test.xml) 的简单 pdf 文件,我试图添加一个 JS 以在打开 pdf 文件后调用它(即使通知用户接受风险等)。我已经读过要执行的操作,应该使用的 JS 是这样的:

this.ExportDataObject({cName:"test.xml", nLaunch:2});
Run Code Online (Sandbox Code Playgroud)

由于某种原因,它不起作用。我检查了 Acrobat 阅读器 DC(版本 2021.001.20145)上的调试 js 控制台,显示的错误是TypeError: this.ExportDataObject is not a function. 我不确定为什么在我的“这个”对象上,ExportDataObject 不可用......我认为它应该始终可用,不是吗?我也没有测试过this.,错误是不同的ReferenceError: ExportDataObject is not defined

这让我觉得this.ExportDataObject存在但不是原始错误所说的函数......但是,如果不是函数,那是什么?typeof 显示“未定义”。不知道如何使这项工作。不确定下一步是否应该进行更多的 JS 调试,或者问题是否与 pdf 或 Acrobat 上的某些内容有关。有什么帮助吗?谢谢。

javascript pdf adobe acrobat pdf-generation

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

击.十六进制到ascii.没有xxd或perl可能吗?

我正在开发一个脚本,我有一个十六进制字符串31323334353637383930313233,我想将其转换为ASCII.期望的输出是1234567890123.

我已经使用它了:

echo "31323334353637383930313233" | xxd -r -p
Run Code Online (Sandbox Code Playgroud)

要么

echo "31323334353637383930313233" | perl -pe 's/(..)/chr(hex($1))/ge'
Run Code Online (Sandbox Code Playgroud)

但重点是尝试使用脚本的最低可能要求.我希望它在suse,fedora,debian,ubuntu,arch等工作......似乎xxd命令包含在vim包中.我想知道是否有办法使用awk或任何内部Linux工具来实现这一点,默认情况下将在所有Linux系统中使用.

谢谢.

bash perl awk hex ascii

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