2016-03-25 15 views
0

Şef tarifinde Linux "set" komutunu kullanmalıyım, düğüm sunucusunda konumsal parametreler ayarlamak için "execute" kaynağını kullanarak çalıştırdım. Yakınsama 'şef-istemci' çalıştırıldıktan sonra hata göstermez. Ancak, düğümde kontrol ettiğimde, konum değişkeninin değerini (Ör: "echo $ 2") yankılamak için, görüntülenen hiçbir değer yoktur. Bunu nasıl çözebilirim, başka bir süreç mi yoksa yanlış mı anladım? Aşağıda tarifiLinux "Set" komut kullanımında Şef tarifi

execute "temp_password" do 
    command "set `cat temppasswd.txt`" 
end 

cevap

1

set kesin çizgiler bir kabuk yerleşik işlev var, bir komut değil bulunmaktadır. Bir dosyanın içeriğine bağlı olarak tarifte daha sonra kullanmak için bazı ortam değişkenlerini ayarlamak istediğinizi söylüyorum. Ne yazık ki bu Unix'in nasıl çalıştığı değil, bir alt süreçteki (bash) bir ortam değişkeninin ayarlanması, ana (şef-istemci) üzerinde hiçbir etkiye sahip değildir. Ayrıca bu bağlamda "konumsal parametreler" ile ne demek istediğini bilmiyorum. Asıl amacınız hakkında daha fazla bilgi sağlayabiliyorsanız, daha fazla yardım sağlayabilirim, ama yazdığımı en iyi şekilde söyleyebilirim ki, sorunuzun hiçbir kısmı aslında bir şey değildir.

+0

Yanıt için teşekkürler. Bir kullanıcı için geçici bir şifre, günlüklerde oluşturulur. Hat içeriğiyle hat içeriğini grep yaptım. parola ve çıktıyı bir dosyaya yapıştırdım (benim durumumda tempasswd.txt). Daha sonra kalıcı bir şifre oluşturmak için bu şifreyi kullanmam gerekiyor. Bu yüzden, temp içeren dosyanın içeriğindeki konumsal parametreleri (değişkenleri) ayarlamak için "set" fonksiyonunu kullanabilirim. parola. Daha sonra belirli bir değişkeni temp ile kullanabiliriz. argüman geçerek şifre değeri. – RahulK

+0

Örneğin, eğer sıcaklık. şifre, dosya içeriğinde 7. konumdadır, değeri doğrulamak için yankılanabiliriz, echo $ 7. Kalıcı şifreyi kurmakta daha sonra 7 $ değişken kullanmak istiyorum. Bu, Linux test sunucusunda bir kabuk komut dosyasını çalıştırarak denediğimde çalışıyor. Bu yüzden, Şef'in bu süreci tarifinde "bash" gibi bir kaynak kullanarak veya başka bir şekilde otomatikleştirmenin bir yoluna ihtiyacım var mı? – RahulK

+0

Bunu yapmanın en iyi yolu, dosyayı Ruby kodundan okumak ve işlemek olacaktır, ancak bir ortam değişkeni ile yapmanız gereken her şey tek bir komut dosyasında olduğu sürece bir "bash" veya "betik" kaynağı kullanabilirsiniz. Kontrol, Şef'e geri döndüğünde, env varsları kaybolur. – coderanger