SSH'yi belirli bir dizine ekleyebilir miyim?


9

I SSH'yi her gün çok sayıda farklı sunucuya dönüştürüyorum ve bazılarının web siteleri için farklı dosya sistemi yapıları var. Sunucuyu her değiştirdiğimde, gerçekten istediğim dosyalara nereden ulaşacağımı bulmam gerekiyor (çünkü çok nadiren içinde olmak istiyorum ~).

Tüm eylemlerimi otomatikleştirmek için Fabric dosyalarını kullanıyorum (git'e itme, git'ten çekmek için sunucuya otomatik SSH, web uygulamasını yeniden başlatma, bağımlılıkları değiştirme vb.), Bu yüzden de istediğimi söyleyemediğimi merak ediyordum doğru dizinde fab sshçalışıp normal bir SSH oturumunda bulunabilmem için SSH'ye doğru dizine gidin ve hemen çalışmaya başlayın.

Bu Kumaş ile ilgili değil; lütfen dikkate almayın. Fabric sadece bir grup komut çalıştırıyor. Benim iddiam sshkomuta ile. Fabric'e kaçmasını söylüyorum.

Peki nasıl alabilirim sshiçin cdgiriş üzerinde belirli dizine?

Not: Bu sunucu veya kullanıcı çapında bir şey olamaz . Bazı sunucularda bir kullanıcı altında birden fazla web sitesi var, bu yüzden bir şey yapıştırma ~/.bashrcbenim için işe yaramaz.

Yanıtlar:


9

Girişte bir şey çalıştırabileceğimi biliyordum, ama koştuktan hemen sonra çıkacağını biliyordum. Şimdi hatırladığım şey, uzak bir sunucuda istediğim kadar çalışabileceğim. Komutları birbirine zincirleyebilirsiniz!

ssh user@server -t "cd /websites/website ; /bin/bash"

Şimdi kumaşa bunu yapmasını söyleyebilirim ve biz yokuz. Basit.


Fabric ile ilgisi olmadığını söylemiştim ama işte benim senaryomun yeni kısmı, yukarıdakilere dayanarak:

def ssh():
    ''' SSH into the remote server at the correct directory '''
    local('ssh -t -p%(port)s %(server)s "cd %(remote_dir)s ; /bin/bash"' % {
        'server': server_host,
        'port': server_port,
        'remote_dir': remote_dir,
    })

Değişkenler ( server_host, server_portve remote_dir) siteden siteye değiştirmek için aynı komut dosyası etrafında symlink .

Fabric giden bağlantıyı işleyebildiğinden, bunu da yapabilirsiniz:

def ssh():
    ''' SSH into the remote server at the correct directory '''
    run('cd %s ; /bin/bash' % remote_dir)

Bu işe yarar, ancak çıktı Fabric'ten bir dize ile eklenir. Bu 80 karakter uzunluğunda istemi yaptı ve tonlarca çözünürlük alırken, bu benim için çok fazla :)

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.