【问题标题】:.NET Core - Download or read a Json file contents from Azure Ubuntu VM.NET Core - 从 Azure Ubuntu VM 下载或读取 Json 文件内容
【发布时间】:2019-09-17 21:12:44
【问题描述】:

我的 Ubuntu 虚拟机上有一个 node.js 脚本,它在完成执行后会生成一个 Json 文件。到目前为止,我可以使用以下代码从 .NET Core 控制台应用程序(使用 Visual Studio 2019)执行此脚本:

string subscriptionId = "mySubscriptionId";
string clientId = "myclientId";
string tenantId = "myTenantId";
string clientSecret = "myClientSecret";

var credentials = SdkContext.AzureCredentialsFactory.FromServicePrincipal(clientId, clientSecret, tenantId, AzureEnvironment.AzureGlobalCloud);
var azure = Azure.Configure().Authenticate(credentials).WithSubscription(subscriptionId);
var vm = await azure.VirtualMachines.GetByResourceGroupAsync("MyAzureRg", "MyUbuntuVm");

string cmd1 = "#!/bin/bash";
string cmd2 = "cd /home/Username/myapp/";
string cmd3 = "xvfb-run nodejs myNodeScript.js";

List<string> commands = new List<string>{cmd1,cmd2,cmd3};

Console.WriteLine("Executing shell script");

await vm.RunShellScriptAsync(commands, null);

Console.WriteLine("Script executed!");

然后我使用 PuTTY 和 SSH 连接到 Ubuntu VM,并且可以确认 Json 已在路径 /home/Username/myapp/ 中正确创建。但是,我的问题是如何将其中的内容取回(读取或下载)到 .NET Core 应用程序?

【问题讨论】:

    标签: c# azure ubuntu .net-core virtual-machine


    【解决方案1】:

    在这种情况下获取json文件值的最简单方法应该是再次使用RunShellScriptAsync(),请尝试以下代码:

    List<string> commands = new List<string> { "cat <your json file path>" };
    
    var result = vm.RunShellScriptAsync(commands, null).GetAwaiter().GetResult();
    
    var message = result.Value[0].Message;
    
    Console.WriteLine(result.Value[0].DisplayStatus);
    
    var stdout = message.Substring(message.IndexOf("[stdout]") + 9).Replace("[stderr]","").Trim();
    
    Console.WriteLine(stdout);
    

    我这边的结果:

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 1970-01-01
      • 2019-03-13
      • 1970-01-01
      • 2018-09-13
      • 1970-01-01
      • 1970-01-01
      • 2019-07-21
      • 1970-01-01
      相关资源
      最近更新 更多