Bir komut dosyasının ARD'de çalıştırıldığını tespit etme


3

ARD içinde bir kabuk komut dosyasının çalıştığını algılamanın bir yolunu bilen var mı (buna karşılık aynı komut dosyasını makinede yerel olarak çalıştırmak)?

Her ikisi de etkileşimli olmadığı için etkileşimli modda çalıştığımızı - bu başarısız olduğunu tespit etmeye baktım.

Ben daha umut verici görünen $ 0 değişkenine bakıyorum - -bashkomut satırından çalıştırıldığında döner, bir komut dosyasında yerel olarak çalıştırıldığında komut dosyasının adını döndürür ve /bin/bashARD aracılığıyla çalıştırıldığında döndürür . Ancak - bu etkilerin hesaba katılıp atılamayacağından emin değilim.

Bu konuda herhangi bir girişi olan var mı?

Yanıtlar:


4

ARD'den bir komut verirken neden yabancı bir argüman iletmiyorsunuz?

Sistem tarafından oluşturulan bir etiketten daha fazla bir iş akışıdır, ancak ARD büyük olasılıkla komutun başlatması için aynı komutu gönderir, open -aböylece dolaylı seviyeye göre ps -efbelirli bir betiği kullanan işlemi bulmak için normal ppid'e güvenemezsiniz .

Neden bir sarmalayıcı komut dosyasını tüm makinelerinize zorlamıyorsunuz ve bu sarmalayıcı komut dosyasını konsolda günlüğe kaydetmek için kullanmıyorsunuz? Ardından, ARD sarmalayıcı komut dosyasını çağırabilir.

Saklanan bir komut dosyası gibi bir şey /usr/local/bin/remoteiyi çalışır:

#!/bin/bash
echo "This script was called remotely and is about to run another script."
/bin/bash $*
echo "This script has just run another script."

Argümanları ayrıştırma ya loggerda hangi bilgisayarın gönderdiği ve / veya tarih / saat damgalama veya kaydetme işlevini kullanmakla ilgili her şeyden hoşlanabilirsiniz , ancak bu, diğer komut dosyalarının yürütülmesini izlemek için yaygın bir yoldur.


Teşekkürler, buna başvurabilirim - aynı betiği her iki yerde de sorunsuzca kullanabileceğimi umduğum halde - her yerde farklı davranması gerekiyor. Ortam değişkenlerini inceliyorum ve ihtiyaçlarım için yeterli olabilecek birkaç seçenek bulmuş olabilirim (COLUMNS veya TERM) - yine de uygun bir yöntemle ilgileniyor olmama rağmen ...
Scot

@ Sccot Burada , kodlamanın bu tarafına aşina değilseniz , bir kabuk betiğinden argümanların ayrıştırılmasına bir örnek .
bmike

Tekrar teşekkürler. Bu betiğin amaçları için, mantığın betiğin kendisinde yerleşik olmasını istedim, bu nedenle TERM (ARD içinde bir betiği çalıştırırken aptal ve yerel olarak çalışırken xterm-256color) değişkenini kullandım. şimdiye kadar bu yeterince iyi bir kanca oldu ...
Scot
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.