c# - .NET Core - 从 Azure Ubuntu VM 下载或读取 Json 文件内容
问题描述
我的 Ubuntu VM 上有一个 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 应用程序?
解决方案
在这种情况下获取 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);
我这边的结果:
希望能帮助到你 。
推荐阅读
- html - 如何在 Safari 中的音频标签导致的 iOS 锁屏上隐藏播放器?
- oracle - Jhipster/Oracle 连接步骤?开发数据库?
- python - Pandas:如何组合 2 个表并为缺失值插入空白行?
- python - 跨非空列连接字符串
- kubernetes - Kubernetes nginx 的双 hsts 标头
- database-migration - 异步运行 Flyway 迁移
- unity3d - 如何减少统一的drawcall?
- xsl-fo - 页面方向取决于条件
- amazon-web-services - AWS Lambda 函数管道在部署阶段失败:操作执行失败角色...无效或无法假定
- heroku - 在 Heroku 评论应用程序中指定 Postgres 数据库计划