Xshell×÷Ϊһ¿î¹¦ÄÜÇ¿´óµÄÖÕ¶Ë·ÂÕæÈí¼þ£¬ÒÔÆäÁ÷³©µÄ½çÃæ¡¢·á¸»µÄ¹¦ÄÜÒÔ¼°¶Ô¶àÖÖÐÒéµÄ¹ã·ºÖ§³Ö£¬Ó®µÃÁËÖڶ࿪·¢ÕߺÍÔËάÈËÔ±µÄÇàíù
¶øPython£¬Æ¾½èÆä¼ò½àµÄÓï·¨¡¢Ç¿´óµÄ¿âÖ§³ÖºÍ¸ßЧµÄ×Ô¶¯»¯ÄÜÁ¦£¬¸üÊdzÉΪÁËÊý¾Ý´¦Àí¡¢ÍøÂç±à³Ì¡¢ÏµÍ³¹ÜÀíµÈÁìÓòµÄÊ×Ñ¡ÓïÑÔ
½«XshellÓëPythonÏà½áºÏ£¬¿ÉÒÔ¼«´óµØÌáÉýÔ¶³Ì¿ª·¢Óë¹ÜÀíµÄЧÂÊ£¬ÊµÏÖ´ÓÊÖ¶¯²Ù×÷µ½×Ô¶¯»¯Á÷³ÌµÄ·ÉÔ¾
±¾ÎĽ«ÉîÈë̽ÌÖÈçºÎÔÚXshellÖÐÉèÖÃPython»·¾³£¬ÒÔ¼°ÈçºÎÀûÓÃÕâÒ»×éºÏʵÏÖ¸ßЧµÄÔ¶³Ì¿ª·¢Óë¹ÜÀí¹¤×÷
Ò»¡¢Xshell¼ò½éÓë°²×°ÅäÖà 1.1 Xshell»ù´¡ XshellÊÇÒ»¿îÃâ·ÑµÄSSH¿Í»§¶ËÈí¼þ£¬Ö§³ÖSSH1¡¢SSH2ÒÔ¼°SFTPµÈ¶àÖÖÐÒ飬Äܹ»·½±ã¡¢°²È«µØÁ¬½Óµ½Ô¶³Ì·þÎñÆ÷
ËüÌṩÁ˷ḻµÄÖÕ¶Ë·ÂÕæ¹¦ÄÜ£¬°üÀ¨¶à±êǩҳ¡¢ºêÂ¼ÖÆ¡¢¿ì½Ý¼ü¶¨ÖƵȣ¬¼«´óÌáÉýÁËÓû§µÄ¹¤×÷ЧÂÊ
´ËÍ⣬Xshell»¹Ö§³Öͨ¹ý½Å±¾½øÐÐ×Ô¶¯»¯²Ù×÷£¬ÕâΪÓëPythonµÄ¼¯³É´òÏÂÁ˼áʵµÄ»ù´¡
1.2 °²×°Óë»ù±¾ÅäÖà - ÏÂÔØ°²×°£ºÇ°ÍùXshell¹ÙÍøÏÂÔØ°²×°°ü£¬¸ù¾Ý²Ù×÷ϵͳѡÔñ¶ÔÓ¦°æ±¾½øÐа²×°
- н¨»á»°£º´ò¿ªXshellºó£¬µã»÷×óÉϽǵġ°Ð½¨¡±°´Å¥£¬ÊäÈëÔ¶³Ì·þÎñÆ÷µÄIPµØÖ·¡¢¶Ë¿ÚºÅ£¨Ä¬ÈÏΪ22£©¡¢Óû§ÃûµÈÐÅÏ¢£¬Ñ¡ÔñSSHÐÒ飬Íê³É»á»°ÅäÖÃ
- ÃÜÔ¿ÈÏÖ¤£¨¿ÉÑ¡£©£ºÎªÁËÌá¸ß°²È«ÐÔ£¬½¨ÒéʹÓÃSSHÃÜÔ¿¶Ô½øÐÐÈÏÖ¤
ÔڻỰÊôÐÔÖУ¬Çл»µ½¡°ÈÏÖ¤¡±±êǩҳ£¬µ¼Èë»òÉú³É˽Կ£¬²¢ÅäÖù«Ô¿µ½Ô¶³Ì·þÎñÆ÷ÉϵÄ`~/.ssh/authorized_keys`ÎļþÖÐ
- ±£´æ²¢Á¬½Ó£ºÉèÖúÃËùÓвÎÊýºó£¬±£´æ»á»°ÅäÖã¬Ë«»÷»á»°Ãû³Æ¼´¿É½¨Á¢Á¬½Ó
¶þ¡¢ÔÚXshellÖÐÉèÖÃPython»·¾³ 2.1 Ô¶³Ì·þÎñÆ÷Python»·¾³×¼±¸ ÔÚ½øÐÐÈκÎPython½Å±¾Ö´ÐÐ֮ǰ£¬È·±£Ô¶³Ì·þÎñÆ÷ÉÏÒѾ°²×°ÁËPython
´ó¶àÊýLinux·¢ÐаæÄ¬Èϰüº¬Python 2.x°æ±¾£¬µ«½¨ÒéʹÓÃPython 3.xÒÔ»ñµÃ¸üºÃµÄÐÔÄܺ͸ü¹ã·ºµÄÖ§³Ö
- ¼ì²éPython°æ±¾£ºÍ¨¹ýÃüÁî`python3 --version`»ò`python --version`²é¿´µ±Ç°Python°æ±¾
- °²×°Python£¨ÈçÐ裩£ºÈôδ°²×°£¬¿Éͨ¹ý°ü¹ÜÀíÆ÷°²×°£¬ÈçUbuntuÉϵÄ`sudo apt-get install python3`
2.2 °²×°±ØÒªµÄPython¿â ¸ù¾ÝÏîÄ¿ÐèÇ󣬿ÉÄÜÐèÒª°²×°Ò»Ð©Python¿â£¬Èç`paramiko`ÓÃÓÚSSHÁ¬½Ó¹ÜÀí£¬`fabric`ÓÃÓÚÈÎÎñ×Ô¶¯»¯µÈ
ʹÓÃ`pip`£¨PythonµÄ°ü¹ÜÀí¹¤¾ß£©½øÐа²×°£º pip3 install paramiko fabric 2.3 ÅäÖÃXshellÖ´ÐÐPython½Å±¾ Xshell±¾Éí²»Ö±½ÓÔËÐÐPython½Å±¾£¬µ«¿ÉÒÔͨ¹ýÆäÄÚÖõĽű¾¹¦Äܵ÷ÓÃϵͳÃüÁîÀ´¼ä½ÓÖ´ÐÐPython½Å±¾
¸ü³£¼ûµÄ·½Ê½ÊÇÔÚÔ¶³Ì·þÎñÆ÷ÉϵÄÖն˻ỰÖÐÖ±½ÓÔËÐÐPython½Å±¾
- ±àдPython½Å±¾£ºÔÚ±¾µØ±àдºÃPython½Å±¾£¬È»ºóͨ¹ýSFTP»òÆäËû·½Ê½ÉÏ´«µ½Ô¶³Ì·þÎñÆ÷
- Ö´ÐÐPython½Å±¾£ºÔÚXshellµÄÖն˻ỰÖУ¬µ¼º½µ½½Å±¾ËùÔÚĿ¼£¬Ê¹ÓÃ`python3 script.py`ÃüÁîÖ´Ðнű¾
Èý¡¢ÀûÓÃPythonʵÏÖÔ¶³Ì×Ô¶¯»¯¹ÜÀí 3.1 Îļþ´«Êä×Ô¶¯»¯ ʹÓÃPythonµÄ`paramiko`¿â£¬¿ÉÒÔÇáËÉʵÏÖSFTPÎļþ´«ÊäµÄ×Ô¶¯»¯
ÒÔÏÂÊÇÒ»¸ö¼òµ¥µÄʾÀý£¬ÑÝʾÈçºÎ´Ó±¾µØÏòÔ¶³Ì·þÎñÆ÷ÉÏ´«Îļþ£º import paramiko hostname = your_remote_server_ip port = 22 username = your_username password = your_password local_file_path = /path/to/local/file.txt remote_file_path = /path/to/remote/file.txt transport = paramiko.Transport((hostname, port)) try: transport.connect(username=username, password=password) sftp = paramiko.SFTPClient.from_transport(transport) sftp.put(local_file_path, remote_file_path) finally: transport.close() 3.2 Ô¶³ÌÃüÁîÖ´ÐÐÓë¼à¿Ø ͨ¹ý`paramiko`»ò`fabric`¿â£¬¿ÉÒÔ×Ô¶¯»¯Ö´ÐÐÔ¶³ÌÃüÁ²¢²¶»ñÆäÊä³ö£¬Õâ¶ÔÓÚÅúÁ¿²Ù×÷¡¢ÏµÍ³¼à¿ØµÈ³¡¾°·Ç³£ÓÐÓÃ
import paramiko hostname = your_remote_server_ip port = 22 username = your_username password = your_password command = uptime ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(hostname, port, username,password) stdin, stdout, stderr = ssh.exec_command(command) output = stdout.read().decode() error = stderr.read().decode() print(Output:,output) print(Error:,error) ssh.close() 3.3 ¶¨Ê±ÈÎÎñÓë×Ô¶¯»¯²¿Êð ½áºÏLinuxµÄ`cron`·þÎñ»òPythonµÄ`schedule`¿â£¬¿ÉÒÔÉèÖö¨Ê±ÈÎÎñ£¬×Ô¶¯Ö´ÐÐPython½Å±¾£¬ÊµÏÖ×Ô¶¯»¯²¿Êð¡¢Êý¾Ý±¸·Ý¡¢ÈÕÖ¾·ÖÎöµÈÈÎÎñ
ÀýÈ磬ʹÓÃ`cron`ÉèÖÃÿÌìÁ賿2µãÖ´ÐÐÒ»¸öPython½Å±¾£º crontab -e ÔÚcrontabÎļþÖÐÌí¼ÓÒÔÏÂÐУº 0 - 2 /usr/bin/python3 /path/to/your_script.py ËÄ¡¢ÓÅ»¯Óë×î¼Ñʵ¼ù 4.1 °²È«ÐÔ¿¼Á¿ - ±ÜÃâÃ÷ÎÄÃÜÂ룺¾¡Á¿Ê¹ÓÃSSHÃÜÔ¿¶Ô½øÐÐÈÏÖ¤£¬±ÜÃâÔڽű¾ÖÐÓ²±àÂëÃÜÂë
- ȨÏÞ¹ÜÀí£ºÈ·±£Python½Å±¾ºÍÔ¶³Ì·þÎñÆ÷µÄÏà¹ØÎļþ¾ßÓÐÊʵ±µÄȨÏÞ£¬·ÀֹδÊÚȨ·ÃÎÊ
- ÈÕÖ¾¼Ç¼£ºÎªPython½Å±¾Ìí¼ÓÈÕÖ¾¼Ç¼¹¦ÄÜ£¬ÒÔ±ã×·×ÙÎÊÌâºÍ·ÖÎöÐÐΪ
4.2 ÐÔÄÜÓÅ»¯ - ÅúÁ¿²Ù×÷£º¾¡Á¿½«¶à¸ö²Ù×÷ºÏ²¢µ½µ¥¸öSSH»á»°ÖУ¬¼õÉÙÁ¬½Ó¿ªÏú
- Òì²½´¦Àí£º¶ÔÓÚÐèÒªµÈ´ýµÄ²Ù×÷£¬¿¼ÂÇʹÓÃÒì²½±à³ÌÄ£ÐÍ£¬Ìá¸ß²¢·¢ÐÔÄÜ
- »º´æ»úÖÆ£º¶ÔÓÚÆµ·±·ÃÎʵ«²»³£±ä¸üµÄÊý¾Ý£¬Ê¹Óûº´æ»úÖÆ¼õÉÙ²»±ØÒªµÄÍøÂçÇëÇó
4.3 ³ÖÐø¼¯³ÉÓë³ÖÐø²¿Êð£¨CI/CD£© ½«Python½Å±¾¼¯³Éµ½CI/CDÁ÷³ÌÖУ¬¿ÉÒÔ½øÒ»²½×Ô¶¯»¯Èí¼þ¿ª·¢ÉúÃüÖÜÆÚ£¬Ìá¸ß½»¸¶ËٶȺÍÖÊÁ¿
ʹÓÃJenkins¡¢GitLab CIµÈ¹¤¾ß£¬¿ÉÒÔÅäÖÃ×Ô¶¯´¥·¢Python½Å±¾Ö´ÐУ¬ÊµÏÖ×Ô¶¯»¯²âÊÔ¡¢¹¹½¨¡¢²¿ÊðµÈ
½áÓï ͨ¹ý½«XshellÓëPythonÏà½áºÏ£¬ÎÒÃDz»½öÄܹ»ÔÚÇ¿´óµÄÖÕ¶Ë·ÂÕæ»·¾³ÖиßЧµØ½øÐÐÔ¶³Ì·þÎñÆ÷¹ÜÀí£¬»¹ÄÜÀûÓÃPythonµÄÇ¿´ó¹¦ÄÜʵÏÖ¸´ÔÓµÄ×Ô¶¯»¯ÈÎÎñ
ÕâÒ»×éºÏ²»½öÌáÉýÁ˹¤×÷ЧÂÊ£¬»¹Îª¿ª·¢ÕßÌṩÁ˸ü¹ãÀ«µÄÏëÏó¿Õ¼ä£¬ÈÃÔ¶³Ì¿ª·¢Óë¹ÜÀí¹¤×÷±äµÃ¸ü¼ÓÁé»î¡¢ÖÇÄÜ
Ëæ×ż¼ÊõµÄ²»¶Ï½ø²½£¬XshellÓëPythonµÄ¼¯³ÉÓ¦Óý«»á¸ü¼Ó¹ã·º£¬ÎªÈí¼þ¿ª·¢ÁìÓò´øÀ´¸ü¶àµÄ´´ÐÂÓë±ãÀû