我正在尝试为 Asterisk 创建一个脚本。我们使用很多channspy。有时,即使软件电话挂断,channspy 也会保持打开状态并且不会挂断(我不明白为什么)。所以我想创建一个脚本来获取以 开头打开的通道数,SIP/[extension]-channel
并将其导出到一个TXT
文件,该文件将有 3 列,并仅提取第一列
awk ' {print $1} '
但这就是我陷入困境的地方,因为每一行都有 1 个频道,如果我想挂断这个频道,我必须这样做
asterisk -rx 'soft hangup SIP/[exntesion]-channel'
有人可以帮助我将每一行作为变量并循环脚本直到最后一行。所以命令会是这样的
asterisk -rx 'soft hangup $variable'
答案1
您也可以system
与 awk 一起使用:
awk ' command = "asterisk -rx '\''soft hangup " $1 "'\''" { system(command); }' channels_file
仅用于测试:
awk ' command = "asterisk -rx '\''soft hangup " $1 "'\''" { print command; }' channels_file
答案2
cat 3-column-file-of-yours.txt | awk '{ sprintf "asterisk -rx \'soft hangup SIP/%s-channel\'\n",$1; }' | /bin/bash
如果您在使用字符串时遇到问题,请使用 \' 附近的斜杠数量,并随时提出问题!