【问题标题】:issues running Powershell script on Linux在 Linux 上运行 Powershell 脚本的问题
【发布时间】:2018-08-08 18:51:31
【问题描述】:

按照本指南操作:https://b-blog.info/en/monitoring-azure-resources-with-zabbix.html

在 Windows 上从脚本获取输出,但在 Zabbix (Centos 7) 上执行时只获取“数据”。没有 SELinux,没有防火墙

pwsh azure.discovery.sql.databases.ps1 rg 111-222-222244-99
{"data":}

身份验证有效,因为 azure.json 包含令牌,并且与 Windows 机器上的文件相同

为 Linux 安装 Powerhell 6.0.2

这里有什么遗漏吗?

Win 10 笔记本电脑的输出:

.\2.ps1 rg 111111
https://management.azure.com/subscriptions/9111111/resourceGroups/rg/providers/Microsoft.Sql/servers/mojsql/databases?api-version=2014-04-01
{"data":{
    "{#RGNAME}":  "rg",
    "{#ID}":  "/subscriptions/111111/resourceGroups/rg/providers/Microsoft.Sql/servers/mojsql/databases/mojabaza",
    "{#SERVERNAME}":  "mojsql",
    "{#DATABASENAME}":  "mojabaza"

Zabbix 作为托管在 Windows 笔记本电脑上的 Hyper-V VM 运行,我可以从中获取输出

【问题讨论】:

  • “我从博客中得到了一个脚本,但它不起作用”太宽泛了;请参阅 stackoverflow.com/help/mcveericlippert.com/2014/03/05/how-to-debug-small-programs 。输出来自$result | convertto-json,所以$result 中没有任何内容。这表示它没有找到除 'master' 之外的任何 SQL 数据库来显示,或者它没有找到任何 SQL 服务器,或者它没有登录到 Azure。 (SELinux 是否允许 pwsh 建立互联网连接?您的硬件防火墙是吗?)它使令牌文件在一个操作系统与另一个操作系统上存在/不存在?
  • @TessellatingHeckler,刚刚更新的问题
  • 关键是只有你有那个环境,所以调试取决于你。您可以使用许多注释掉的 write-host 命令来查看与您的笔记本电脑版本的差异。
  • 第二个参数是$subscription_id - 在一个可以工作的你使用111111 和在一个不工作的你使用111-222-222244-99 - 只是你改变它来掩盖真正的 StackOverflow 发布?我很难看到它无法发出 Web 请求,因为如果 -ErrorAction Stop 无法连接或收到登录被拒绝消息,它应该会抛出一些非常明显的错误。在第 56 行之后插入一个新行 write-host "servers: $sql_servers" 并在 66 之后插入另一个新行 write-host "databases: $sql_databases" 看看它是否找到了,也许?

标签: linux powershell zabbix


【解决方案1】:

终于找到问题所在了:

在我的笔记本电脑上,我不得不将.content.properties 替换为Value(原始脚本没有产生任何结果——我首先在 Windows 上对其进行了测试),然后将其复制到了 Linux。

然后刚刚恢复(将Value替换为.content.properties)并开始工作

【讨论】:

    猜你喜欢
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 2013-10-05
    相关资源
    最近更新 更多