سلام
در درجه ی اول باید بگم چرا سی شارپ واقعا؟ تا وقتی جاوا هست چرا سی شارپ ...
و پاسخ سوالتون :
برنامه ی شما باید یه درخواست soap بفرسته به سرور
رابطه ی بین برنامه ی شما و سرور لینوکس از طریق mono برقرار میشه
مونو هم تحت وب سرور آپاچی و wwwrun اجرا میشه
در هر صورت شما باید یوزر کاربری رو به لیست sudoers های ماشین لینوکس تون اضافه کنید و به اون اجازه ی shutdwon کردن بدین، چون بصورت پیش فرض فقط کاربر root می تونه همچین کاری کنه
برای این کار دستور visudo رو بزنید و به انتهای این فایل این موارد رو اضافه کنید:
کد:
User_Alias APACHE = wwwrun
Cmnd_Alias SHUTDOWN = /sbin/shutdown APACHE
APACHE ALL = (ALL) NOPASSWD: SHUTDOWN
بعد از انجام این تغییرات، یه بار سیستم لینوکس تون رو راه اندازی مجدد کنید ( البته ضروری نیست ولی گویا رو بعضی توزیع ها بدون ریبوت اعمال نمیشه این تنظیمات)
حالا با یه همچین متدی میشه لینوکس رو shutdown کرد
کد:
public bool shutdownServer()
{
Process process = new Process();
if (CommonTasks.getOperatingSystem() == CommonTasks.OperatingSystemType.Linux)
{
process.StartInfo.FileName = "/usr/bin/sudo";
process.StartInfo.Arguments = "/sbin/shutdown -h now";
}
else
{
return false;
}
library.logging(classDetails + MethodInfo.GetCurrentMethod().Name, string.Format("Shutting down with the following {0} {1}", process.StartInfo.FileName, process.StartInfo.Arguments));
process.Start();
return true;
}
همونطور که مشاهده می کنین، هیچ احتیاجی به ssh نیست، زمانی به اون احتیاج دارین که بخواین توی لینوکس یه کامند رو وارد کنین و نتیجه ش رو ببینین، یعنی کاربر قراره پشت دستگاه با کامندلاین لینوکس تعامل داشته باشه ... یا مثلا یه فایل رو بفرسته برای ماشینی که لینوکس روش نصبه یا از روش یه فایل رو برداره ...