विंडोज-टू-लिनक्स: दूरस्थ मशीनों पर उपयोगकर्ता प्रक्रिया (bkgrnd के रूप में) के रूप में एक शेल स्क्रिप्ट निष्पादित करें


1

मैं निम्नलिखित करने की कोशिश कर रहा हूं:

1) विंडोज मशीन से रिमोट मशीन 1,2 और 3 (सभी लिनक्स) पर शेल स्क्रिप्ट चलाएं

2) मेरी विंडोज मशीन पर मेरी पलक है जिसे मैं निम्नलिखित तरीके से उपयोग कर रहा हूं

plink -i <my_private_key> user@machineX.com -t "bash <script_loc> args &"

जब मैं ऐसा करता हूं, तो अपेक्षित प्रक्रिया शुरू नहीं होती है। मैंने पुष्टि की है कि मशीनएक्स (1,2, or3) में रिमोट लॉगिंग और टाइपिंग द्वारा:

ps -A -F | grep -i "whatever"

मैं इसे कमांड लाइन पर टाइप करके शुरू कर सकता हूं:

cmd /c start plink -i <my_private_key> user@machineX.com -t ""bash <script_loc> args ""&""""

लेकिन इसका मतलब है कि यह एक नया टर्मिनल खोलेगा और विंडोज मशीन से लॉग इन करने पर इन्हें समाप्त कर दिया जाएगा।

मेरा लक्ष्य इन लिपियों को दूरस्थ रूप से शुरू करना और उन्हें पृष्ठभूमि प्रक्रियाओं या डेमन के रूप में चालू रखना है। मैं पिड आदि ढूंढने में सक्षम हो जाऊंगा क्योंकि मुझे पता है कि वे कमांड लाइन के माध्यम से क्या चल रहे होंगे।

क्या यह एक सेवा बनाने के बिना संभव है?

सादर,

जवाबों:


1

यदि आप पलक चला रहे हैं, तो आप ऐसा करने के लिए PS रीमोटिंग का उपयोग नहीं कर रहे हैं, जैसा कि आप पीएस होस्ट (कंसोल / आईएसई / वीएसकोड) में से एक पलक कमांड चला रहे हैं। यह एक पीएस मुद्दा नहीं है, लेकिन पीएस में कैसे चलें और निर्वासित करें। मैं बिना किसी समस्या के रोजाना लिनक्स बॉक्सों पर पलक मारता हूं, लेकिन जैसा कि आपने अपने दूसरे कमांड में नोट किया है और कमांड इश्यू शुरू करते हैं।

यदि आप पीएस कंसोल में से एक में हैं, तो आपको एक निष्पादन कमांड प्रदान करना होगा, और बाहरी .exe के लिए, आपको एक्सई को पूरी तरह से अर्हता प्राप्त करने की आदत में शामिल होना चाहिए।

उदाहरण के लिए, यहां यह वह तरीका है जो मैं अपने सभी लिनक्स बॉक्सों पर सफलतापूर्वक करता हूं। वह & amp; (एम्परसेंड) का अर्थ है - कमांड के रूप में स्ट्रैच। मूल रूप से वही काम जो आप cmd.exe प्रारंभ को कॉल करके कर रहे हैं, लेकिन बिना अतिरिक्त विंडो के।

# Using PowerShell and Plink for Linux remote management
# Example
$PlinkPath = 'D:\Tools\plink.exe'

$linuxhostname = 'SomeLinuxHostName'
$linuxusername = 'SomeLinuxUserName'
$LinuxSessionName = 'LinuxSessionNameName' # Putty Saved session name

$GetIptablesNat = & $PlinkPath -load $LinuxSessionName 'sudo -s iptables -L -nv --line-numbers -t nat';$GetIptablesNat 
$GetIptablesFilter = & $PlinkPath -load $LinuxSessionName 'sudo -s iptables -L -nv --line-numbers -t filter';$GetIptablesFilter
$RestartIptablesService = & $PlinkPath -load $LinuxSessionName 'sudo -s service iptables restart';$RestartIptablesService

# Network statistics
$GetNetworkStatistics = & $PlinkPath -load $LinuxSessionName 'sudo -s netstat -tN';$GetNetworkStatistics

# Connectivity check
(
'SomeLinuxHostFQDN','SomeLinuxIPA'
) | % { Test-Connection -ComputerName $_ }


# From Linux NAT Gateway
$TestConnectivity = & $PlinkPath -load $LinuxSessionName 'sudo -s ping SomeHostIPA';$TestConnectivity

यदि आप पृष्ठभूमि में चलने के लिए सामान चाहते हैं, जो कि PS नौकरियां हैं।

देखें यह लेख:

https://codingbee.net/tutorials/powershell/powershell-running-tasks-in-the-background

समानांतर प्रक्रियाओं और Runspaces के बारे में PS मदद फ़ाइल जानकारी भी देखें।

Get-Help -Name about_Jobs
Get-Help -Name about_Parallel
Get-Help -Name about_PSSessions
Get-Help -Name about_PSSession_Details
Get-Help -Name about_Workflows
Get-Help -Name about_WorkflowCommonParameter

पॉवरशेल रनस्पेस का उपयोग शुरू करना

https://blogs.technet.microsoft.com/heyscriptingguy/2015/11/26/beginning-use-of-powershell-runspaces-part-1

हालाँकि मैंने प्लिंक के साथ इसकी कोशिश नहीं की है।

लेकिन सिस्को स्विच के लिए भी पीएस और प्लिंक उपयोग के मामलों के बारे में बहुत सारे लेख हैं।

SSH PowerShell plink.exe के साथ ट्रिक्स

http://www.virtu-al.net/2013/01/07/ssh-powershell-tricks-with-plink-exe

SSH सक्षम Linux होस्ट का उपयोग करने के लिए नमूना PowerShell मॉड्यूल   SMA

यह SSH सक्षम लिनक्स का प्रबंधन करने के लिए एक नमूना Windows PowerShell मॉड्यूल है   मेजबान। यह SSH कमांड्स करने के लिए पुट्टी टूल Plink.exe को लपेटता है।

https://gallery.technet.microsoft.com/scriptcenter/Sample-PowerShell-module-8d961a1c

और ध्यान दें, PS में एक SSH मॉड्यूल है, इसलिए, आपको विशेष रूप से Linux क्लाइंट के साथ इंटरॉप करने के लिए Plink का उपयोग करने की आवश्यकता नहीं है।

PowerShell के साथ SSH का उपयोग करना

https://www.thomasmaurer.ch/2016/04/using-ssh-with-powershell

पॉश-एसएसएच 2.0.2

के खिलाफ कमांड निष्पादित करने के लिए SSH और SCP कार्यक्षमता प्रदान करें   दूरस्थ होस्ट।

https://www.powershellgallery.com/packages/Posh-SSH/2.0.2


धन्यवाद। मैं यह देखने की कोशिश कर रहा हूं कि क्या इसमें से एक सिस्टम यूनिट बनाना, चीजों में मदद करता है ... लेकिन ऐसा लगता है कि आपका सैल्यूटोन काम करने जा रहा है अगर मेरा मशीनएक्स ब्लैकबॉक्स हो गया है।
hagubear

0

आपको बस एक दूरस्थ स्क्रिप्ट की आवश्यकता होती है जो पीआईडी ​​फ़ाइल को कांटे और लिखती है।

इसे करने के कई तरीके हैं।

आप किस क्लाइंट का उपयोग करते हैं (पलक, पोटीन, एसश, या क्या कभी) कोई फर्क नहीं पड़ता।

जब तक:

  1. आपको स्क्रिप्ट चलाने का अधिकार है।
  2. स्क्रिप्ट को चलाने की क्षमता।
  3. स्क्रिप्ट में सब कुछ के लिए अनुमतियाँ।

मैंने यह सटीक कोशिश नहीं की है, लेकिन यहाँ एक उदाहरण है मुझे 0.5 मिनट का Google-सत्र मिला।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.