8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

Websphere 自动化

faintsignal 3月前

106 0

我遇到了一个奇怪的问题,我忘记在我的 AWS 爬虫策略中添加 [kms:*],因此出现错误,但即使在该爬虫成功之后,也没有创建任何表:这是 e...

我遇到了一个奇怪的问题,我忘记在我的 AWS 爬虫策略中添加 [kms:*],因此出现错误,但即使在该爬虫成功之后,也没有创建任何表:

enter image description here

这是爬虫日志中的错误:

enter image description here

爬虫应该失败了,不是吗?

帖子版权声明 1、本帖标题:Websphere 自动化
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由faintsignal在本站《bash》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 我有一个脚本,它引用了一个 txt 文件,例如 serverList.txt,它包含一个运行 WAS 的 Linux 服务器列表,并停止了这些服务器上的节点代理。我想将停止的位置添加到脚本中......

    我有一个脚本,它引用了一个 txt 文件,例如 serverList.txt,其中包含正在运行 WAS 的 Linux 服务器列表并停止了这些服务器上的节点代理。

    我想在脚本中添加一些功能,让它们停止在这些主机服务器上运行的应用服务器。应用服务器的名称不同,因此很难将其合并到其中。我不确定这是否可行,或者我是否应该使用其他东西。这是我当前用于 nodeagent 的脚本

    serverList="serverList.txt"
    while read -r server;
    do
        print "Stopping nodeagent for:" $server
        ssh -n $server "su - wsadmin -c /opt/WebSphere/AppServer/profiles/AppSrv01/bin/stopNode.sh"
    done < "$serverList"
    
  • 我正在尝试使用 GitHub Actions 在多个虚拟机上启动一个进程。但是,该命令没有完成(因为它需要继续运行),所以我的 for 循环就挂起了。我需要的是一种方法来

    我正在尝试使用 GitHub Actions 在多个虚拟机上启动一个进程。但是,该命令未完成(因为它需要继续运行),所以我的 for 循环就挂起了。

    我需要的是一种方法来检查命令的日志输出(在已知文件中),然后每当日志文件中出现特定句子时就继续循环。

    这是我目前拥有的一个最小示例:

    #! /bin/bash
    
    VMS=("10.10.789.001" "10.10.789.002" "10.10.789.003")
    for VM in "${!VMS[@]}"; do
    command.sh "$VM"
    done
    

    命令.sh:

    #! /bin/bash
    vmip=$1
    ssh user@"$vmip" -T "myprogram -flag &> output.log"
    

    这种方式在某种意义上是可行的,即建立连接、 myprogram 启动连接并将其输出重定向到 output.log 。但是,由于 myprogram 继续运行(正如预期的那样), for 循环永远不会到达 done .

    我尝试过 timeout 像这样设置:

    #! /bin/bash
    
    VMS=("10.10.789.001" "10.10.789.002" "10.10.789.003")
    for VM in "${!VMS[@]}"; do
    timeout 5m command.sh "$VM"
    done
    

    但是,这会结束整个脚本,因为它 exit 在达到超时后有效地抛出一个,并且仍然不会继续循环 for

    我知道这 myprogram 将写入 setup complete 文件 output.log ,因此我可以通过执行以下操作来检查:

    #! /bin/bash
    cat vault.log | grep "setup complete"
    if [ $? = 0 ]; then
    <do something>
    fi
    

    如果满足上述条件,程序就设置完成,现在只需运行,这正是我想要的。但是,我不知道该 <do something> 部分需要做什么,才能确保原始 for 循环可以继续。

    注意,我无法访问该 myprogram 程序的内容。它只是一个我需要运行的现有程序,而不是我可以自己修改的东西。

  • 后台进程 ssh 启动每个命令 myprogram 。然后进行某种循环来检查日志。

    命令.sh:

    #! /bin/bash
    
    main()
    {
        local ip="$1"
    
        # Run the program in the background and redirect output to the log file
        ssh user@"$ip" -T "myprogram -flag &> output.log" &
        local ssh_pid=$!
    
        local max_iterations=100
        local iter_sleep_seconds=2
    
    
        # Wait until the setup complete message appears in the log file
        for ((i=1; i<=max_iterations; i++))
        do
            if ssh user@"$ip" -T "grep 'setup complete' output.log"
            then
                echo "Setup complete on $ip."
                break
            else
                echo "Waiting for setup to complete on $ip..."
                sleep $iter_sleep_seconds
            fi
        done
    
        if (( i > max_iterations ))
        then
            echo "Maximum number of iterations reached for $ip. Killing the instance."
            kill $ssh_pid
            return 1
        fi
    
        return 0
    }
    
    main "$@"
    

    后台进程每次调用 command.sh

    主程序:

    VMS=("10.10.789.001" "10.10.789.002" "10.10.789.003")
    
    for VM in "${VMS[@]}"
    do
        ./command.sh "$VM" &
    done
    
    wait
    echo "All VM processes are done. Check log above if successful."
    
  • 在 Bash 中,单引号 ('') 和双引号 (\'\') 有什么区别?

    ) 和双引号 ( '' ) "" 有什么区别

  • 标题说的是 Bash,但这实际上适用于任何与 Bourne 兼容的 shell(经典的 Bourne shell、POSIX

  • JDP 3月前 0 只看Ta
    引用 7

    单引号不会插入任何内容,但双引号会。例如:变量、反引号、某些 \ 转义符等。

    例子:

    $ echo "$(echo "upg")"
    upg
    $ echo '$(echo "upg")'
    $(echo "upg")
    

    Bash 手册中有这样的说法:

    3.1.2.2 单引号

    将字符括在单引号 ( ' ) 中可保留引号内每个字符的字面值。单引号之间不能出现单引号,即使前面有反斜杠。

    3.1.2.3 双引号

    将字符括在双引号 ( " ) 中会保留引号内所有字符的文字值,但 、 和 除外 $ , ` , \ (当启用历史扩展时) ! 。字符 $ ` 在双引号内保留其特殊含义(请参阅 Shell 扩展 )。反斜杠仅在后跟以下字符之一时才保留其特殊含义: $ , ` , " , \ 、 或换行符。在双引号中,后跟以下字符之一的反斜杠将被删除。前面没有特殊含义的字符的反斜杠保持不变。可以在双引号内通过在双引号前面加上反斜杠来引用双引号。如果启用,则将执行历史扩展,除非 ! 使用反斜杠对双引号中出现的 进行转义。 前面的反斜杠 ! 不会被删除。

    特殊参数 * @ 在双引号中具有特殊含义(参见 Shell 参数扩展 )。

  • 对于那些不知道“interpolate”是什么意思的人:en.wikipedia.org/wiki/String_interpolation

  • 当您使用 git 提供的 git_prompt 时,他们建议像这样使用 PS1='[\u@\h \W$(__git_ps1 \' (%s)\')]\$ ', git prompt,根据这个不应该工作。PS# 变量有什么特别之处吗?或者如果它不进行插值,为什么它会起作用。

  • 引用 10

    @ekiim 那个确切的文本被设置(未更改)到 PS1 中。尝试 echo $PS1 来了解我的意思。但是 PS1 在显示之前会被评估(请参阅 bash 手册页中的 PROMPTING 部分)。要测试这一点,请尝试 PS1='$X'。您将没有提示。然后运行 ​​X=foo,您的提示突然变成了 \'foo\'(如果 PS1 在设置时被评估而不是显示,您仍然不会有提示)。

  • 引用 11

    注意:$ name='O'Hara' 不合法,但 $ name='O'\''Hara' 可以。即使单引号之间的单引号不合法,您也可以通过将每个 ' 替换为 '\'' 而不带空格来将其转义。

  • 在此上下文中,另请参阅:.com/questions/16033158/... 和 .com/a/16033290/2153622。

  • 接受的答案 很棒 。我正在制作一个表格,帮助快速理解主题。解释涉及一个简单的变量 a 以及一个索引数组 arr .

    如果我们设定

    a=apple      # a simple variable
    arr=(apple)  # an indexed array with a single element
    

    然后 echo 在第二列中输入表达式,我们将得到第三列中显示的结果/行为。第四列解释了该行为。

    # 表达 结果 评论
    1 "$a" apple 变量在内部扩展 ""
    2 '$a' $a 变量不在内部扩展 ''
    3 "'$a'" 'apple' '' 里面没有特殊含义 ""
    4 '"$a"' "$a" "" 在内部按字面意思处理 ''
    5 '\'' p7 无法逃脱 ' '' 使用 "'" $'\'' (ANSI-C 引用)
    6 "red$arocks" red $arocks 不扩大 $a ;用于 ${a}rocks 保存 $a
    7 "redapple$" redapple$ $ 后面没有变量名,计算结果为 $
    8 '\"' \" \ 里面没有特殊含义 ''
    9 "\'" \' \' 在内部解释 "" ,但对 '
    10 "\"" " \" 在内部解释 ""
    11 "*" * glob 在内部不起作用 "" ''
    12 "\t\n" \t\n \t 并且 \n "" 内部没有特殊含义 '' ;使用 ANSI-C 引用
    十三 "`echo hi`" hi `` $() 在内部进行评估 "" (反引号保留在实际输出中)
    14 '`echo hi`' `echo hi` `` 并且 $() 不在内部进行评估 '' (反引号保留在实际输出中)
    15 '${arr[0]}' ${arr[0]} 无法在内部进行数组访问 ''
    16 "${arr[0]}" apple 数组访问在内部工作 ""
    17 $'$a\'' $a' 单引号可以在 ANSI-C 引用中转义
    18 "$'\t'" $'\t' ANSI-C 引用不被解释 ""
    19 '!cmd' !cmd 历史扩展字符 '!' 被忽略 ''
    20 "!cmd" cmd args 扩展到最近匹配的命令 "cmd"
    21 $'!cmd' !cmd 历史扩展字符 '!' 被忽略

    也可以看看:

    • ANSI-C 使用 $'' 引用 - GNU Bash 手册
    • 使用 $\'\' 进行区域设置翻译 - GNU Bash 手册
    • 报价的三点公式
  • 接受的答案最后说,特殊参数 * 和 @ 在双引号中具有特殊含义,那么 \'*\' 怎么会得到 * 呢?

  • 引用 15

    @Karl-AnderoMere,因为在这种情况下它们根本没有作为参数扩展。'$@' 和 '$*' 是参数扩展。'@' 和 '*' 不是。

  • 我只想指出,在 bash 中“简单变量”也是数组,也就是说 echo $a 与上面例子中的 echo ${a[0]} 相同

  • @codeforester 第 3 点,您说 ' 在 \ 内没有特殊含义,但根据 GNU 手册: \'字符 '$' 和 ''' 在双引号内保留其特殊含义\'。 ' 的特殊含义是保留 $ 的文字值,答案应该是 $a。为什么不是这样?

  • Csh 样式的历史记录引用可能最好关闭;它们不是很有用,关闭它们可以帮助您避免因未加引号的感叹号而出现令人讨厌的事件未找到错误消息。请参阅 .com/questions/11816122/echo-fails-event-not-found

  • 如果您指的是回显某些内容时发生的情况,单引号将逐字回显它们之间的内容,而双引号将评估它们之间的变量并输出变量的值。

    例如,

    #!/bin/sh
    MYVAR=sometext
    echo "double quotes gives you $MYVAR"
    echo 'single quotes gives you $MYVAR'
    

    将得到如下结果:

    double quotes gives you sometext
    single quotes gives you $MYVAR
    
  • 引用 20

    其他人解释得很好,我只想提供一些简单的例子。

    单引号 ,以防止 shell 解释任何特殊字符。美元符号、空格、& 符号、星号和其他特殊字符在单引号内时都会被忽略。

    echo 'All sorts of things are ignored in single quotes, like $ & * ; |.'
    

    它将给出这个:

    All sorts of things are ignored in single quotes, like $ & * ; |.
    

    唯一不能放在单引号内的是单引号。

    双引号的 作用与单引号类似,但双引号仍允许 shell 解释美元符号、反引号和反斜杠。众所周知,反斜杠会阻止解释单个特殊字符。如果需要将美元符号用作文本而不是变量,则双引号内的此功能非常有用。它还允许对双引号进行转义,这样它们就不会被解释为带引号的字符串的结尾。

    echo "Here's how we can use single ' and double \" quotes within double quotes"
    

    它将给出这个:

    Here's how we can use single ' and double " quotes within double quotes
    

    还可能注意到,双引号内的撇号会被忽略,否则撇号会被解释为引号字符串的开头。但是,双引号内的变量会被解释并替换为其值。

    echo "The current Oracle SID is $ORACLE_SID"
    

    它将给出这个:

    The current Oracle SID is test
    

    反引号 与单引号或双引号完全不同。反引号并非用于阻止解释特殊字符,而是强制执行其括起来的命令。执行括起来的命令后,其输出将替换原始行中的反引号。通过示例可以更清楚地了解这一点。

    today=`date '+%A, %B %d, %Y'`
    echo $today
    

    它将给出这个:

    Monday, September 28, 2015
    
返回
作者最近主题: