카테고리 없음

2023.05.09 centos7 주피터 서버 , 함수

Dokker 2023. 5. 10. 08:57
dr-xr-x---. 19 root root      4096  5월  8 17:33 .

d = 디렉터리

r = 읽기권한

x = 실행권한

root 소유자

 

 

 

P.150 함수

 

 

함수 = 일부 기능을 표현하는 프로그램

 

우리가 사용하는 모든 Class는 Object Class의 자손이다.

 

함수 - 1. 내장함수(선언할 필요가 없다.) : Objeck Class

        - 2. 외장함수 : 부모 Class 에서 가져온다. Objeck Class + import

        - 3. 사용자 정의 함수 : 내가 원하는 동작을 하기 위한 함수, Class 자기 자신에서 정으된 함수

 

함수지향 프로그래밍  = 공장 자동화 (반복하는 애들)

 

사용자함수는 변수선언보다 먼저한다. 입력과 출력을 신경쓰지 않는다.

 

 

입력---(메세지)---함수---->출력

             ------주소

 

 

객체지향의 가장 큰 특성 : 관계를 밝혀라

 

간단한 예제

입력(과일) ---------> 함수(믹서기) -------->출력(쥬스)

함수는 선언문에서 사전 정의되어야 한다.

 

def 믹서기 : 

       기능을 정의하는 코드블럭

 

입력처리

믹서기 호출

출력처리

 

 

def a(): #함수를 호출할 때 전달될 매개변수

      Print("믹서기 돌아갑니다.")

       return #결과값의 반환 / 함수의 종류 전달

 

#입력처리

b = input("과일의 이름")

a() #함수의 호출

print(" %s 쥬스 출력"%(b))

 

 


함수의 사용 목적 : 반복되는 패턴 정의 : 코드의 재사용성을 높인다.

 

 

여러가지의 과일을 만드는 프로그램

 

def a(b): #함수를 호출할 때 전달될 매개변수
    print("믹서기 돌아갑니다.")
    print(" %s 쥬스 출력"%(b))
    return #결과값의 반환 / 함수의 종류 전달


list1 = ["사과","포도"]
b = input("과일의 이름")

if b in list1:
    a(b)
else:
    print("지원하지 않는 과일 입니다.")


 

함수의 사용 ---> 재사용성을 높인다.

 

#문자열의 색이 녹색 : 예약어(이미 정의된 문자열이다.)

 

 

def a():
    pass

a=1 #변수명과 함수명은 구분이 가능하다.

 

 

 


def add(a, b):
    return (a+b , True)

d, e = add(1,2)
if e ==True:
    print("add()가 정상적으로 동작했습니다.")
    print(d)
else:
    print("함수 호출 실패")

 

 

 


사칙연산 프로그램.

def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

def multiply(a, b):
    return a * b

def divide(a, b):
    if b != 0:
        return a / b
    else:
        return "Error"

num1 = float(input("첫 번째 숫자를 입력하세요: "))
num2 = float(input("두 번째 숫자를 입력하세요: "))

operation = input("사칙연산 종류를 선택하세요 (+, -, *, /): ")

if operation == "+":
    result = add(num1, num2)
elif operation == "-":
    result = subtract(num1, num2)
elif operation == "*":
    result = multiply(num1, num2)
elif operation == "/":
    result = divide(num1, num2)
else:
    result = "Error: 잘못된 연산 종류입니다."

    
print("결과:", result)

컴퓨터가 정리되는 순서로 코드를 짜야함

 

코드를 점검할때는 선언부 먼저 확인

위에서 아래로 차례대로 분석

 

 

import paramiko
import time

def s_ssh(ip,cmd,user,pw):
    con = paramiko.SSHClient()
    con.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    con.connect(ip,username=user,password=pw,port=22)
    (stdin,stdout,stderr)=con.exec_command(cmd)
    for i in stdout:
        print(i)
    con.close()
    
def r_ssh(ip,cmd,user,pw):
    con = paramiko.SSHClient()
    con.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    con.connect(ip,username=user,password=pw,port=22)
    #(stdin,stdout,stderr)=con.exec_command(cmd)
    connect=con.invoke_shell()
    connect.send(cmd)
    time.sleep(.2)
    router_out = connect.recv(65535) #65535 버퍼 사이즈
    for i in router_out:
        print(str(i)+"\n")
    time.sleep(.2)
    con.close()

ip = input("IP: ")
#user = input("user: ")
#pw = input("pw: ")
os = input("해당 OS를 입력해주세요:")
user = "root"
pw = "asd123!@"
cmd = input("cmd: ")

if os == "리눅스":
    s_ssh(ip,cmd,user,pw)
elif os == "라우터":
    r_ssh(ip,cmd,user,pw)
    
#print(result)
#print(stdout)    
con.close()