Genel / özel bir anahtar çifti kullanmak istemiyorsanız expect
, hedef adresinize bağlı olarak otomatik olarak şifrenizi girmek için bir komut dosyası yazabilirsiniz .
Düzenleme: Demek istediğim, bir yandan, expect
sizin için şifreyi girmek için kullanan ve diğer yandan, belirli bir kullanıcı ve ana bilgisayar için bir yapılandırma dosyasından şifreyi okuyan bir betik olabilir . Örneğin, aşağıdaki python betiği güneşli gün senaryosu için çalışacaktır:
#!/usr/bin/python
import argparse
from ConfigParser import ConfigParser
import pexpect
def main(args):
url = args.url
user, host = url.split('@', 1)
cfg_file = 'ssh.cfg'
cfg = ConfigParser()
cfg.read(cfg_file)
passwd = cfg.get(user, host)
child = pexpect.spawn('ssh {0}'.format(url))
child.expect('password:')
child.sendline(passwd)
child.interact()
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Run ssh through pexpect')
parser.add_argument('url')
args = parser.parse_args()
main(args)
ve yapılandırma dosyası formatı aşağıdaki gibi olacaktır:
[user_1]
host1 = passwd_1
host2 = passwd_2
[user_2]
host1 = passwd_1
host2 = passwd_2
Not: Açıklandığı gibi, python betiğinin tüm olası hataları işlemek ve ssh ile olası tüm URL'leri sorgulamak için çok daha karmaşık olması gerekir (örnekte, bunun gibi bir şey olacağı varsayılır user@host
, ancak kullanıcı kısmı böyle olmaz) çoğu zaman kullanılmadı), fakat temel fikir hala aynı olurdu. Yapılandırma dosyasıyla ilgili olarak, farklı bir yapılandırma dosyası kullanabilir veya .ssh/config
bu dosyayı ayrıştırıp belirli bir kullanıcı ve ana bilgisayar için şifreyi almak için kendi kodunuzu yazıp kullanabilirsiniz .