ورود

View Full Version : سوال: مشکل در اجرا کدن دستور top با استفاده از ssh



vb8334
سه شنبه 24 اردیبهشت 1392, 12:19 عصر
با سلام به تمامی دوستان

دوستان من با سی شارپ یه کدی نوشتم که با استفاده از کتابخانه ssh.net به لینوکس که مجازی سازی کردم

وصل میشم تا اینجا مشکلی نیست مشکل تو اجرا کردن بعضی دستورات هستش مثلآ:

top یا top -n 1 یا atop دلیلش هم اینکه این دستورات حالت interactive هستن و تو خروجی برنامه من نمی یان ولی این دستور رو می تونم اجرا کنم mpstat

نکته : من زمانی که برنامه رو دیباگ میکنم از دستور top این ارور رو به من میده

error:TERM environment variable not set.

من کد برنامه رو اینجا میزارم :




private void button2_Click(object sender, EventArgs e) { Renci.SshNet.SshClient sshClient = new Renci.SshNet.SshClient("192.168.150.128", "ust", "10"); sshClient.Connect(); var command = sshClient.RunCommand("top"); var line = command.Result.Split('\n'); List<ServerStatusCpu> serverstatus = new List<ServerStatusCpu>(); for (int i = 3; i < line.Length - 1; i++) { var li = line[i]; var words = li.Split(' '); List<string> fillterwords = new List<string>(); foreach (var w in words) { if (w != "") { fillterwords.Add(w); } } ServerStatusCpu serverStatus = new ServerStatusCpu(); serverStatus.Time = fillterwords[0]; serverStatus.TimeType = fillterwords[1]; serverStatus.Name = fillterwords[2]; serverStatus.UserCpuTime = float.Parse(fillterwords[3].Replace("%", "")); serverStatus.UserNiceCpuTime = float.Parse(fillterwords[4].Replace("%", "")); serverStatus.SystemCpuTime = float.Parse(fillterwords[5].Replace("%", "")); serverStatus.IoWaitCpuTime = float.Parse(fillterwords[6].Replace("%", "")); serverStatus.IrqCpuTime = float.Parse(fillterwords[7].Replace("%", "")); serverStatus.SoftwareIrqCpuTime = float.Parse(fillterwords[8].Replace("%", "")); serverStatus.StealCpuTime = float.Parse(fillterwords[9].Replace("%", "")); serverStatus.GuestCpuTime = float.Parse(fillterwords[10].Replace("%", "")); serverStatus.IdleCpuTime = float.Parse(fillterwords[11].Replace("%", "")); serverstatus.Add(serverStatus); } dataGridView1.DataSource = serverstatus; }





class ServerStatusCpu




public class ServerStatusCpu { public string Time { get; set; } public string TimeType { get; set; } public string Name { get; set; } public float UserCpuTime { get; set; } public float SystemCpuTime { get; set; } public float UserNiceCpuTime { get; set; } public float IdleCpuTime { get; set; } public float IoWaitCpuTime { get; set; } public float IrqCpuTime { get; set; } public float SoftwareIrqCpuTime { get; set; } public float StealCpuTime { get; set; } public float GuestCpuTime { get; set; } }

FastCode
چهارشنبه 25 اردیبهشت 1392, 21:13 عصر
export TERM=linux
export TERM=dumb
export TERM=vt100

باید ببینید کتابخونتون چه مقادیری رو پشتیبانی میکنه.

vb8334
پنج شنبه 26 اردیبهشت 1392, 22:18 عصر
چه جوری باید این کار رو انجام بدم

این دستورات رو زدم هیچ اتفاقی نیفتاد.

مرسی

FastCode
پنج شنبه 26 اردیبهشت 1392, 22:24 عصر
اینطوری هم آزمایش کنید:
TERM=linux top
TERM=dumb top

vb8334
پنج شنبه 26 اردیبهشت 1392, 23:17 عصر
TERM=linux top

این دستور تو ترمینال کار میکنه ولی دومیه میگه همچین دستوری نمی شناسم

من تو برنامم تست می کنم این ارور رو میده.: top: failed tty get

من از این دستورات استفاده می کنم اون ارور بالا رو میده

Term=linux top -i
Term=linux top

ولی این دستور رو اجرا می کنم term=linux top -b -n 5

به خوبی اجرا میشه اگه بشه اون دو دستور رو اجرا کرد خیلی بهتر میشه

مرسی

FastCode
جمعه 27 اردیبهشت 1392, 00:23 صبح
حروف بزرگ و کوچک رو رعایت کنید.لینوکس به بزرگی و کوچکی حروف حساسه.

vb8334
جمعه 27 اردیبهشت 1392, 01:07 صبح
نه رعایت کردم تو پستم اینجوری نوشتم

vb8334
جمعه 27 اردیبهشت 1392, 16:46 عصر
من کارم راه افتاد با استفاده از کتابخانه rebex که یه سری به این سایت بزنید من اونجا سوال کردم و جواب هم گرفتم

گفتم بگم حالا شاید بعدآ یکی مثل من دچار سر در گمی نشه
مرسی