.Net 在容器中操作宿主機

1

方案描述? ? ? ?

在 docker?容器中想操作宿主機,一般會使用 ssh 的方式,然后 .Net 通過執行遠程 ssh?指令來操作宿主機。本文將使用?交互式 .Net 容器版?中提供的鏡像演示?.Net 在容器中如何操作宿主機。

2

前期準備? ? ? ?

1.?宿主機上生成?ssh key

生成 ssh key:

ssh-keygen -t rsa -b 4096

9d4025d1530b89078c6eb392686b78f4.png

把 public key 加入到 authorized_keys:

cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys

a29969b899f1cd7f125950a26e19fc95.png

2.?啟動容器

啟動容器,并把 private key 掛載到容器中:

docker?run?--name?dotnet-interactive?-d?-v?/root/.ssh/id_rsa:/root/.ssh/id_rsa?-p?80:8888?dotnet-interactive:1.0.0
docker ps

511e82c2fbbc5cb620ea2a6bf9c51680.png

3.?安裝 ssh client

打開網頁并進入 Terminal:

241f26e0b6aa03cec8a2e58af6c05f76.png

安裝 ssh client:

# 更新源
apt-get update -y# 安裝 ssh client
apt-get install openssh-client -y

3c3d9310c4eb267d3f98d830dac840cd.png

檢查?ssh client 安裝情況:

ssh --help

7f380c79b9e455070473fb4af1ddabe9.png

3

操作演示? ? ? ?

1.?指令獲取容器主機名

hostname

27abf5819025417f687b031fab0c61a2.png

2. 指令獲取宿主機主機名

ssh -q -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o PasswordAuthentication=no -i /root/.ssh/id_rsa {user}@{nodeIp} "hostname"

dc27bbc39e744093ae70bf4a0f6d4287.png

3.?.Net 獲取容器主機名

using System.Diagnostics;public string ExecuteCommand(string command)
{var escapedArgs = command.Replace("\"", "\\\"");var process = new Process{StartInfo = new ProcessStartInfo{FileName = "/bin/bash",Arguments = $"-c \"{escapedArgs}\"",RedirectStandardOutput = true,RedirectStandardError = true,UseShellExecute = false,CreateNoWindow = true}};process.Start();process.WaitForExit();var message = process.StandardOutput.ReadToEnd();message += process.StandardOutput.ReadToEnd();return message;
}var hostname = ExecuteCommand("hostname");
hostname

6a029948e26dca8f7312cb42e0db0959.png

4.?.Net 獲取宿主機主機名

public string ExecuteCommandSSH(string ip, string rootUser, string command)
{var script = $"ssh -q -o \"StrictHostKeyChecking no\" -o \"UserKnownHostsFile=/dev/null\" -i /keys/{ip}/sshkey/id_rsa \"{rootUser}@{ip}\" \"{command}\"";return ExecuteCommand(script);
}var hostname2 = ExecuteCommandSSH("10.0.0.2", "root", "hostname");
hostname2

a042b2bb3c9dd2c2e53476c071e215c0.png

4

參考總結? ? ? ?

以上就是本文希望分享的內容,如果大家有什么問題,歡迎在公眾號 - 跬步之巔留言交流。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/287450.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287450.shtml
英文地址,請注明出處:http://en.pswp.cn/news/287450.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【看動漫學編程】程序員在異世界生個娃 第1篇:太極村

前言 作者文筆比較水,還請見諒。 以下內容還將使用視頻動態漫畫表現,剪輯完將會貼出鏈接。 小說劇情為劇情需要,過渡到知識點,部分篇幅可能沒有技術知識點還望諒解。 由于沒有經費支持,所以畫出來的東西是我自己用代碼…

【ArcGIS風暴】最牛逼空間數據批處理神器來了:用戶自定義工具箱GeoStorm.tbx

【Warming up】在學習和工作的過程中,作者曾寫過很多采用ArcGIS模型構建器(Model Builder)、Python代碼等批處理方法(感興趣的GISers可以去【測繪地理信息Big風暴專】欄去交流學習指導),大大的減輕了操作壓力,提高了工作效率。今天給大家展示一款神器:自定義工具箱GeoS…

2.6. PostgreSQL表之間連接

到目前為止,我們的查詢一次只訪問了一個表。查詢可以一次訪問多個表,或者用某種方式訪問一個表,而同時處理該表的多個行。一個同時訪問同一個或者不同表的多個行的查詢叫連接查詢。舉例來說,比如你想列出所有天氣記錄以及這些記錄…

Android之Caused by: java.lang.IllegalArgumentException: Failed to find configured root that contains

1 問題 用takePhoto去照相的時候特么的一打開就報這個錯誤 2020-04-09 21:33:49.124 19016-19016/com.appsinnova.android.keepshare E/AndroidRuntime: FATAL EXCEPTION: mainProcess: com.appsinnova.android.keepshare, PID: 19016java.lang.RuntimeException: Unable to …

Linux下c/c++項目代碼覆蓋率的產生方法

最近做了一系列的單元測試相關的工作,除了各種規范及測試框架以外,討論比較多的就是關于代碼覆蓋率的產生,c/c與其他的一些高級語言或者腳本語言相比較而言,例如 Java、.Net和php/python/perl/shell等,由于沒有這些高級…

C# WPF從后臺代碼生成行列可變的表格

z概述WPF常用的表格控件是DataGrid,這個控件在前臺XAML編寫的話,一般列已經固定,然后給每個列去綁定數據,但是如果我的列不固定,隨著運算結果變動呢?這時候DataGrid,就比較難實現這個需求&#…

軟件架構實踐文章鏈接

2019獨角獸企業重金招聘Python工程師標準>>> 架構 InfoQ: 又拍網架構中的分庫設計 SNS網站數據庫技術分析 - 51CTO.COM 數據庫水平切分的實現原理解析 - iBATIS - Java - JavaEye論壇 基于amoeba的mysql分布式數據庫學習(一) - Java - JavaEy…

【看動漫學編程】程序員在異世界生個娃 第2篇:外掛已準備就緒

前言 作者文筆比較水,還請見諒。 以下內容還將使用視頻動態漫畫表現,剪輯完將會貼出鏈接。 小說劇情為劇情需要,過渡到知識點,部分篇幅可能沒有技術知識點還望諒解。 由于沒有經費支持,所以畫出來的東西是我自己用代碼…

java剪切txt文件_用Java把剪切板的內容實時保存到txt

test類:提示用戶程序已啟動,提示保存位置,清空剪切板。package com.ariya.service;import com.ariya.service.impl.ClipboardServiceImpl;/*** author Ariya* 程序入口*/public class Test {public static void main(String[] args) {Clipboa…

【三維激光掃描】第一章:三維激光掃描入門基礎知識

隨著地理空間信息服務產業的快速發展,地理空間數據的要求越來越高。對地理空間數據的要求正朝著大信息量、高精度、可視化和可挖掘方向發展。地面激光雷達技術是一門新興的測繪技術,已逐漸成為廣大科研和工程技術人員全新的解決問題的手段。地面三維激光掃描技術與全站儀測量…

Android之kotlin里面本地圖片BitmapFactory.decodeFile轉bitmap失敗問題

1 問題 我們手機本地有個圖片文件比如如下 /storage/emulated/0/Android/data/package_name/cache/1586444511539.png 我們需要png轉bitmap,然后設置到ImageView里面顯示 var bitmap BitmapFactory.decodeFile(imagePath);if (bitmap null) returnelse mImagevi…

3、面向對象-繼承-多態

1、繼承子類可以繼承父類的一切,一個子類只能有一個父類,一個父類可以有多個子類//父類class Ren{public $name;public $sex;public $yuyan;function Say() {echo $this->name."正在講話!";}}//美國人的子類class America ex…

整理iOS9適配中出現的坑

一、NSAppTransportSecurity iOS9讓所有的HTTP默認使用了HTTPS,原來的HTTP協議傳輸都改成TLS1.2協議進行傳輸。直接造成的情況就是App發請求的時候彈出網絡無法連接。解決辦法就是在項目的info.plist 文件里加上如下節點: NSAppTransportSecurity - NSAl…

由c# dynamic是否裝箱引發的思考

前言前幾天在技術群里看到有同學在討論關于dynamic是否會存在裝箱拆箱的問題,我當時第一想法是"會"。至于為啥會有很多人有這種疑問,主要是因為覺得dynamic可能是因為有點特殊,因為它被稱為動態類型,可能是因為這里的動態對大家造成的誤解,認為…

【看動漫學編程】程序員在異世界生個娃 第3篇:搞不好我就是個王者

前言 作者文筆比較水,還請見諒。 以下內容還將使用視頻動態漫畫表現,剪輯完將會貼出鏈接。 小說劇情為劇情需要,過渡到知識點,部分篇幅可能沒有技術知識點還望諒解。 由于沒有經費支持,所以畫出來的東西是我自己用代碼…

PHP會話控制考察點

為什么要使用會話控制技術 HTTP協議是無狀態的,也就是說HTTP沒有一個內建的機制來維護兩個事務之間的狀態。當一個用戶完成一個請求發起第二個請求的時候,服務器無法知道這次請求是來自于上一次的客戶。而用戶登錄、購物車等,這些是需要服務器…

數據庫SQL語句學習筆記(6)-使用函數處理數據

1.SQL也可以用函數來處理數據,函數一般是在數據上執行的,為數據的轉換和處理提供了方便。但是每一個數據庫管理系統(DBMS)都有特定的函數,事實上,只有少數幾個函數被所有的DBMS等同地支持。例如&#xff0c…

java3n 1_1005 繼續(3n+1)猜想(JAVA)

卡拉茲(Callatz)猜想已經在1001中給出了描述。在這個題目里,情況稍微有些復雜。當我們驗證卡拉茲猜想的時候,為了避免重復計算,可以記錄下遞推過程中遇到的每一個數。例如對 n3 進行驗證的時候,我們需要計算 3、5、8、4、2、1&…

【遙感物候】Matlab求解一元六次多項式,計算植被生長季始期

一元六次多項式能很好的逼近濾波后的曲線,與二次多項式相比,在擬合植被整個生長季曲線方面有更好的優勢,該方法常用來描述北方溫帶和高緯度地區時序NDVI生長季模式。因此,本文使用一元六次多項式來擬合植被整個生長季曲線,效果很好。那么擬合后,這樣解方程呢求生長季參數…

Android之給控件添加水紋波效果

1 問題 給控件添加水紋波效果,點擊起來像點中了,不然效果太粗糙了,沒反應。 2 實現 給控件添加如下屬性 android:background"?android:attr/selectableItemBackground"波紋有邊界 android:background"?android:attr/sele…