AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-302078

KuboMD's questions

Martin Hope
KuboMD
Asked: 2019-07-26 05:54:19 +0800 CST

副教授。数组没有被重新声明?

  • 1

我有一个像菜单一样的程序。它有一个关联数组config,称为:

declare -A config=( [h]="?" [c]="?" [x]="?" [l]="?" [t]="?" [n]="?" )

在主循环中检查是否所有值都已配置,例如:

if [ "${config[h]}" == "Y" ] && [ "${config[c]}" == "Y" ] && [ "${config[l]}" == "Y" ] && [ "${config[x]}" == "Y" ] && [ "${config[t]}" == "Y" ] && [ "${config[n]}" == "Y" ];

现在,当我完成一次运行时,我取消设置并重新声明数组。

unset config; declare -A config=( [h]="?" [c]="?" [x]="?" [l]="?" [t]="?" [n]="?" )

但是,该数组似乎没有被正确地重新声明。这是因为当我只配置其中一个值时,[C]=Y例如,if语句通过。我肯定会这样做,因为if语句的主体会改变一些文本颜色。我相信这是因为其余的索引实际上并未设置为“?”,因此该if语句被简化为[ "${config[c]}" == "Y"]is true。我知道这一点,因为当我$config[@]在if声明正文中回显时,果然我只看到一个“Y”而不是五个。如何让数组正确重新声明?

编辑
感谢您的关注;

  1. 在一些用户输入后,值被设置为 Y。这部分我非常有信心,因此从我的问题中省略了。它们都遵循这种格式:

     read ch
            if [ $ch == "Hosts" ]; then
                    while true; do
                            nano listHosts
                            echo -en "Commit this list of Hostnames? [Y|N to re-edit]: "
                            read yn
                            if [ $yn == "Y" ] || [ $yn == "y" ] || [ $yn == "yes" ]; then
                                    break
                            elif [ $yn == "N" ] || [ $yn == "n" ] || [ $yn == "no" ]; then  
                                    continue
                            fi      
                    done
                    config[h]="Y"
    
  2. 关于 Kusalanda 的评论,我检查了不正确的大小写,但它始终是小写的“c”。同样,是的,我的意思是${config[@]}。

  3. Declare -p 提供了一些启示: declare -a config='([0]="Y")'

-p 怎么会说我用的是小写的 a?调用顺序如下:

 unset config
 declare -A config=( [h]="?" [c]="?" [x]="?" [l]="?" [t]="?" [n]="?" )   

read然后我通过;设置 $ch="Commands"

 elif [ $ch == "Commands" ]; then  
                while true; do
                        nano iSet
                        echo -en "Commit this list of commands? [Y|N to re-edit]: "             
                        read yn                        
                        if [ $yn == "Y" ] || [ $yn == "y" ] || [ $yn == "yes" ]; then           
                                break
                        elif [ $yn == "N" ] || [ $yn == "n" ] || [ $yn == "no" ]; then                  
                                continue        
                        fi      
                done        
                config[c]="Y"
                declare -p config

根据 Bodo 的建议,我尝试在较小的脚本中重新创建:

dec() {
        declare -A config=( [h]="?", [c]="?" )
}
test() {
        declare -p config
        if [ "${config[h]}" == "Y" ] && [ "${config[c]}" == "Y" ]; then 
                echo "Yup"
        fi
}

dec
config[h]="Y"; config[c]="Y"

unset config
dec
config[h]="Y" 

test

就像在我的其他脚本中一样,if解析为 true: declare -a config='([0]="Y")' Yup

bash array
  • 1 个回答
  • 137 Views
Martin Hope
KuboMD
Asked: 2019-06-27 10:04:47 +0800 CST

从ping计算丢包?

  • 0

我有一个 ESXi VM,可以在我们网络上的大约 700 台设备上执行命令。它正在使用Expect,并且由于该设备的使用年限,它们有一段时间的性能不佳。这两个不能很好地混合 - 因为 Expect 脚本在继续之前必须等待很长时间才能获得输出。

为了避免这种情况,我们的团队决定ping在连接到设备之前进行测试。如果有丢包,我们稍后再讨论。

我们遇到的问题是我们的 ping 测试如下所示:

loss=`ping -i 0.2 -w 2 $1 | grep "packet loss" | awk '{print $6}'`
loss=${loss%?}

echo "$loss"

两秒内 10 次 ping - 但我们得到了很多9% 的丢包响应。例如,由于丢包检测,我们通常有74/700 个测试抢先退出。其中 39/74报告为9%,而其余报告为 10 的倍数。

据我们所知,这并没有什么意义。有 10 个数据包正在发送……如果一个被丢弃,那应该是 10% 的丢失。这种情况很少被观察到,但确实会发生。是否有可能在记忆中发生了导致数字 9 显现的事情?如果这些是数据包丢失的合法实例,那么这对我们来说是个大新闻。

networking ping
  • 1 个回答
  • 3374 Views
Martin Hope
KuboMD
Asked: 2019-06-01 03:35:49 +0800 CST

本地/远程

  • 2

我想实时从 SNMP 记录器中获取相关行并将它们移动到我的应用程序服务器进行检查。下半场很好,scp正在做戏。前半段让我有些悲伤。

我想要做的是检查三个最新的日志文件中的相关消息。所以我会这样做: [user@SNMPServer]$ cd /var/opt/OV/log/nnm/; files=`ls -t | grep -m 3 trap.csv`; echo $files

trap.csv trap.csv.2019-05-31_07_00_01 trap.csv.2019-05-31_06_00_01

这很好,因为我随后计划:

[user@SNMPServer]$ grep $ipAddress $files

当我在 SNMP 服务器上运行它时,它再次运行良好。

当我从我的虚拟机执行此操作时,
admin@alarmux:~$sudo ssh [email protected] "cd /var/opt/OV/log/nnm/; files=`ls -t | grep -m 3 trap.csv`; echo $files"

我得到这个输出:
assets bash: testerlog: command not found bash: count.txt: command not found

这些是ls -t我的虚拟机主目录的结果,而不是远程的。我在某处缺少转义字符吗?

shell ssh
  • 2 个回答
  • 546 Views
Martin Hope
KuboMD
Asked: 2019-04-30 09:30:10 +0800 CST

如果我启动太多后台作业会怎样?

  • 13

我需要使用期望脚本在 700 个网络设备上做一些工作。我可以按顺序完成,但到目前为止运行时间约为 24 小时。这主要是由于建立连接所需的时间以及这些设备(旧设备)的输出延迟。我能够建立两个连接并让它们并行运行就好了,但是我能推多远呢?

我不认为我可以一次完成所有 700 次,当然这个次数是有限度的。我的虚拟机可以管理的 telnet 连接数。

如果我确实尝试以这样的某种循环启动其中的 700 个:

for node in `ls ~/sagLogs/`; do  
    foo &  
done

和

  • CPU 12 个 CPU x Intel(R) Xeon(R) CPU E5649 @ 2.53GHz

  • 内存 47.94 GB

我的问题是:

  1. 所有 700 个实例可能同时运行吗?
  2. 在我的服务器达到其限制之前,我能走多远?
  3. 当达到该限制时,它会等待开始下一次迭代foo还是会崩溃?

不幸的是,我在公司生产环境中运行,所以我不能完全尝试看看会发生什么。

bash background-process
  • 4 个回答
  • 7641 Views
Martin Hope
KuboMD
Asked: 2019-04-30 05:45:45 +0800 CST

别名时输出不同

  • 5

我有一个命令集作为这样的别名:

alias badalarm="cat ~/sagLogs/* | grep -I 'failed to generate expected' | awk '{print $4}' | sort | uniq | tee /dev/tty | wc -l" 

它给了我这个输出:

$ badalarm
alg-t1sg0103
alg-t1sg0104
all-t1sg0006
all-t1sg0009
input)
5

但是,如果我直接从 CLI 运行命令,我会得到:

$ cat ~/sagLogs/* | grep -I 'failed to generate expected' | awk '{print $4}' | sort | uniq | tee /dev/tty | wc -l
alg-t1sg0103
alg-t1sg0104
all-t1sg0006
all-t1sg0009
4

别名版本如何获取其他文件?当我使用
cat ~/sagLogs/* | grep 'failed to generate expected'

我得到这个输出:

[...]
Apr:09:09:31:01:         >>>1 on all-t1sg0009 failed to generate expected 134
Apr:09:09:31:01:         >>>2 on all-t1sg0009 failed to generate expected 107
Apr:09:09:31:01:         >>>2 on all-t1sg0009 failed to generate expected 108
Apr:10:08:00:35:         >>>1 on all-t1sg0009 failed to generate expected 133
Apr:10:08:00:35:         >>>1 on all-t1sg0009 failed to generate expected 107
Binary file (standard input) matches

如何从我的别名中省略“标准输入”文件?

bash grep
  • 1 个回答
  • 305 Views
Martin Hope
KuboMD
Asked: 2018-12-08 10:51:27 +0800 CST

snmptrap - 底层配置?

  • 0

我正在尝试让我的 Ubuntu LTS 16.04 服务器将 SNMPTraps 发送到我的 HP OVO 服务器。原因是网络上有一些旧设备在失败时无法发送 SNMP 警告,但仍然可以通过网络连接的卡进行访问。因此,我的 Ubuntu 服务器连接到该卡以评估故障节点。我已经使用 Bash 和 Expect 实现了这一点——所以现在我想做的是发送一个snmptrap作为我的脚本的一部分。我的问题是:

问题

该snmptrap命令是否需要底层配置?或者它是否像我们(或者也许只是我)认为telnet命令是理所当然的那样从命令行工作?

我问是因为我试图在公司网络上实现这一点,而目前我的 OVO 服务器没有收到陷阱。所以我想缩小它是否是几个防火墙之一,或者问题是,如前所述,一个底层配置问题。

语境:

我的期望脚本基本上将网络连接卡管理的每张卡的状态作为数组返回到 bash - 0 表示 OK 1 表示没有响应。所以 Bash 会:

errors=$((expect ~/assets/connect))
for i in ${!errors[@]}:
do
    if [[ ${errors[$i]} -eq 1 ]]:
        then:
        snmptrap #stuff goes here; the relevant source IP is saved elsewhere & available - I want the SNMP trap to send a "node $i" down. 
    fi
done
networking snmp
  • 1 个回答
  • 586 Views
Martin Hope
KuboMD
Asked: 2018-11-21 07:11:18 +0800 CST

Logrotate 不会自动发生

  • 0

logrotate /etc/logrotate.conf每当我看到我的日志文件超过指定的阈值并且它旋转得很好时,我就可以调用。我的印象是,只要 logrotate 配置中指定的文件超出其阈值,它就会自动旋转它们,而无需我运行命令。

/var/log/upstart/*server.log {
        size 2500M
        missingok
        rotate 5
        compress
        compress
        notifempty
        nocreate
}

有任何想法吗?

logs logrotate
  • 1 个回答
  • 340 Views
Martin Hope
KuboMD
Asked: 2018-11-16 05:19:42 +0800 CST

文件权限 - 只允许脚本读取?

  • 0

我有一个以明文形式存储的密码。我只希望我的期望脚本“LoadList”能够读取密码以生成 SFTP 会话。在任何情况下我都希望能够读取密码。这可以通过将脚本分配给用户并仅授予该用户读取权限来以某种方式完成吗?

files expect
  • 1 个回答
  • 63 Views
Martin Hope
KuboMD
Asked: 2018-11-15 10:56:36 +0800 CST

如何避免此错误“无法执行“des”:没有这样的文件或目录”?

  • -1

我正在尝试在 Ubuntu 16.04 上的本 wiki 中概述的Expect 中进行加密。我已经安装了tcllib

root@alarmux:/home/abdmin# apt-get install tcllib
Reading package lists... Done
Building dependency tree       
Reading state information... Done
tcllib is already the newest version (1.17-dfsg-1).
0 upgraded, 0 newly installed, 0 to remove and 77 not upgraded.

但是,当我运行我的脚本时,我得到:

couldn't execute "des": no such file or directory
    while executing
"exec echo "$pd" | des -e -k $key -b > /home/abdmin/$filename"
    (procedure "utility_encrypt" line 3)
    invoked from within
"utility_encrypt pswd encrypted_Pass"
    (file "./tclTest" line 22)

为什么des命令不能执行?

expect tcl
  • 3 个回答
  • 1196 Views
Martin Hope
KuboMD
Asked: 2018-11-14 06:30:29 +0800 CST

不使用 Make 安装 tarball?

  • 0

我的新 Xenial VM 上没有 Internet 访问权限,但我确实有到服务器的 SFTP。问题是我需要安装一些软件包。获取它们很好,我只需将它们下载到连接互联网的服务器并传输到 VM。我的问题我只看到使用“Make”安装的 tarball。我有 Make 包作为 tarball,但没有“Make”我不知道如何安装它。

编辑:具体来说,压缩包是make-dfsg_4.1.orig.tar.gz

Tl; dr - 我如何在不使用 Make 的情况下安装 tarball?我可以:
$tar -xf make-dfsg_4.1.orig.tar.gz
$cd make-dfsg_4.1
$ls
不知道从这里去哪里。

更新:自述文件说:

如果您需要构建 BNU Make 并且没有其他“make”程序可供使用,则可以使用 shell 脚本“build.sh”。为此,首先按照安装中的说明运行“配置”。然后,不要输入“make”来构建程序,而是输入“sh build.sh”。这应该会在当前目录中编译程序。然后,您将拥有一个 Make 程序,可用于 './make install' 或其他任何内容。

我不明白是什么意思

首先按照安装中的说明运行“配置”。有什么见解吗?

ubuntu apt
  • 1 个回答
  • 664 Views
Martin Hope
KuboMD
Asked: 2018-08-22 04:50:33 +0800 CST

新贵Logrotate?

  • 0

我的配置有什么问题?我不得不 --force logrotate 几次才能看到变化,但编号都是靠不住的。

    ----@----------:/var/log/upstart# ls -Anh
    total 4.0G
    -rw-r----- 1 0 0  56K Aug 21 08:41 graylog-server.log
    -rw-r----- 1 0 0 1.1G Aug 21 08:36 graylog-server.log.1.1.gz
    -rw-r----- 1 0 0 727M Aug 21 08:35 graylog-server.log.1.gz.1.gz
    -rw-r----- 1 0 0    0 Aug 20 11:22 graylog-server.log.2.gz
    -rw-r----- 1 0 0  28K Aug 20 10:40 graylog-server.log.3.gz.1.gz
    -rw-r----- 1 0 0 1.2G Aug 20 10:29 graylog-server.log.4.gz.1
    -rw-r----- 1 0 0 861M Aug 21 08:40 graylog-server.log.4.gz.1.gz
    -rw-r----- 1 0 0 212M Aug 20 10:25 graylog-server.log.5.gz
    -rw-r----- 1 0 0 5.3M Aug 20 06:25 graylog-server.log.6.gz

配置:

----@----------:/var/log/upstart# vim /etc/logrotate.d/upstart

/var/log/upstart/*-server.log.* {
        size 3G
        missingok
        rotate 5
        compress
        notifempty
        nocreate
}

使用 logrotate

--force /etc/logrotate.d/upstart

旋转。

logs configuration
  • 1 个回答
  • 430 Views
Martin Hope
KuboMD
Asked: 2018-08-02 05:22:59 +0800 CST

找不到包裹?存储库已添加!

  • 1

我被困在这里。我正在尝试在具有严格防火墙的公司机器上更新 java。

因此我不能使用 ppa 命令,并手动将 WebUpd8 存储库添加到我的源列表中:

deb http://ppa.launchpad.net/nilarimogard/webupd8/ubuntu trusty main
deb-src http://ppa.launchpad.net/nilarimogard/webupd8/ubuntu trusty main

当我运行 apt-get update 时:

root@graylog:/home/ubuntu# sudo apt-get update | grep -i ppa
Hit http://ppa.launchpad.net trusty InRelease
Hit http://ppa.launchpad.net trusty/main Sources
Hit http://ppa.launchpad.net trusty/main amd64 Packages
Hit http://ppa.launchpad.net trusty/main i386 Packages
Hit http://ppa.launchpad.net trusty/main Translation-en

然后尝试安装...

root@graylog:/home/ubuntu# sudo apt-get install oracle-java8-installer
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package oracle-java8-installer

有任何想法吗?我正在尝试将 Java 作为配置 Graylog 的先决条件。谢谢。

ubuntu apt
  • 1 个回答
  • 3643 Views
Martin Hope
KuboMD
Asked: 2018-07-25 06:37:33 +0800 CST

计数行时的命令输出保留

  • 1

我正在阅读上一个程序的输出行数, 发现它很有帮助。然而,虽然

$ grep -i [pattern, file] | tee >(wc -l) 

给了我很好的 grep 行和匹配数的输出,我想问是否有人知道如何将匹配数保存到我脚本中的变量中。我想以更易读的格式在字符串中输出它。

bash grep
  • 1 个回答
  • 138 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve