سکرپٹ کا استعمال کرتے ہوئے SecureCRT میں خودکار اندراج

نیٹ ورک انجینئرز کو اکثر نوٹ پیڈ سے کنسول میں کچھ ٹکڑوں کو کاپی/پیسٹ کرنے کا کام درپیش ہوتا ہے۔ آپ کو عام طور پر کئی پیرامیٹرز کاپی کرنے پڑتے ہیں: یوزر نیم/پاس ورڈ اور کچھ اور۔ سکرپٹ کا استعمال آپ کو اس عمل کو تیز کرنے کی اجازت دیتا ہے۔ لیکن اسکرپٹ لکھنے اور اسکرپٹ کو چلانے کے کاموں میں دستی ترتیب کے مقابلے میں کل کم وقت لگنا چاہئے، ورنہ اسکرپٹ بیکار ہیں۔

یہ مضمون کس کے لیے ہے؟ یہ مضمون فاسٹ سٹارٹ سیریز سے ہے اور اس کا مقصد نیٹ ورک انجینئرز کے وقت کو بچانا ہے جب ایک سے زیادہ آلات پر آلات (سنگل ٹاسک) ترتیب دیتے ہیں۔ SecureCRT سافٹ ویئر اور بلٹ ان اسکرپٹ پر عمل درآمد کی فعالیت کا استعمال کرتا ہے۔

مواد

تعارف

SecureCRT پروگرام میں ایک بلٹ ان اسکرپٹ پر عمل درآمد کا طریقہ کار موجود ہے۔ ٹرمینل اسکرپٹس کس کے لیے ہیں؟

  • خودکار I/O، اور کم سے کم I/O توثیق۔
  • معمول کے کاموں کی تکمیل کو تیز کریں - آلات کی ترتیبات کے درمیان وقفے کو کم کریں۔ (ایک ہی ہارڈ ویئر پر کاپی/ماضی کی کارروائیوں کو انجام دینے کے لیے وقت کی وجہ سے وقفوں کی ڈی فیکٹو کمی، جس میں 3 یا اس سے زیادہ کمانڈ کے ٹکڑے ہارڈ ویئر پر لاگو کیے جائیں گے۔)

اس دستاویز میں کاموں کا احاطہ کیا گیا ہے:

  • سادہ اسکرپٹ کی تخلیق۔
  • SecureCRT پر اسکرپٹ چل رہا ہے۔
  • سادہ اور جدید اسکرپٹ استعمال کرنے کی مثالیں۔ (حقیقی زندگی سے مشق کریں۔)

سادہ اسکرپٹ کی تخلیق۔

آسان ترین اسکرپٹ صرف دو کمانڈز کا استعمال کرتی ہیں، Send اور WaitForString۔ یہ فعالیت 90% (یا اس سے زیادہ) کیے گئے کاموں کے لیے کافی ہے۔

اسکرپٹس Python، JS، VBS (Visual Basic)، Perl وغیرہ میں کام کر سکتی ہیں۔

ازگر

# $language = "Python"
# $interface = "1.0"
def main():
  crt.Screen.Synchronous = True
  crt.Screen.Send("r")
  crt.Screen.WaitForString("name")
  crt.Screen.Send("adminr")
  crt.Screen.WaitForString("Password:")
  crt.Screen.Send("Password")
  crt.Screen.Synchronous = False
main()

عام طور پر "*.py" ایکسٹینشن والی فائل

VBS

# $language = "VBScript"
# $interface = "1.0"
Sub Main
  crt.Screen.Synchronous = True
  crt.Screen.Send vbcr
  crt.Screen.WaitForString "name"
  crt.Screen.Send "cisco" & vbcr
  crt.Screen.WaitForString "assword"
  crt.Screen.Send "cisco" & vbcr
  crt.Screen.Synchronous = False
End Sub

عام طور پر "*.vbs" ایکسٹینشن والی فائل

اسکرپٹ اندراج کا استعمال کرتے ہوئے اسکرپٹ بنائیں۔

آپ کو اسکرپٹ لکھنے کے عمل کو خودکار کرنے کی اجازت دیتا ہے۔ آپ اسکرپٹ لکھنا شروع کریں۔ SecureCRT کمانڈز اور اس کے بعد ہارڈ ویئر کے جواب کو ریکارڈ کرتا ہے اور آپ کے لیے تیار شدہ اسکرپٹ دکھاتا ہے۔

اے۔ اسکرپٹ لکھنا شروع کریں:
سیکیور سی آر ٹی مینو => اسکرپٹ => اسٹارٹ ریکارڈنگ اسکرپٹ
ب کنسول کے ساتھ اعمال انجام دیں (CLI میں ترتیب کے مراحل کو انجام دیں)۔
وی اسکرپٹ لکھنا ختم کریں:
سیکیور سی آر ٹی مینو => اسکرپٹ => اسکرپٹ ریکارڈنگ بند کریں…
اسکرپٹ فائل کو محفوظ کریں۔

پھانسی شدہ کمانڈز اور محفوظ کردہ اسکرپٹ کی مثال:

سکرپٹ کا استعمال کرتے ہوئے SecureCRT میں خودکار اندراج

SecureCRT پر اسکرپٹ چل رہا ہے۔

اسکرپٹ بنانے/ترمیم کرنے کے بعد، ایک فطری سوال پیدا ہوتا ہے: اسکرپٹ کو کیسے لاگو کیا جائے؟
کئی طریقے ہیں:

  • اسکرپٹ مینو سے دستی طور پر چل رہا ہے۔
  • کنکشن کے بعد خودکار آغاز (لاگ آن اسکرپٹ)
  • اسکرپٹ کا استعمال کیے بغیر خودکار لاگ ان
  • SecureCRT میں بٹن کے ساتھ دستی طور پر ٹرگر کرنا (ایک بٹن بنانا اور SecureCRT میں شامل کرنا باقی ہے)

اسکرپٹ مینو سے دستی طور پر چل رہا ہے۔

سیکیور سی آر ٹی مینو => اسکرپٹ => چلائیں…
- آخری 10 اسکرپٹس یاد ہیں اور فوری لانچ کے لیے دستیاب ہیں:
سیکیور سی آر ٹی مینو => اسکرپٹ => 1 "اسکرپٹ فائل کا نام"
سیکیور سی آر ٹی مینو => اسکرپٹ => 2 "اسکرپٹ فائل کا نام"
سیکیور سی آر ٹی مینو => اسکرپٹ => 3 "اسکرپٹ فائل کا نام"
سیکیور سی آر ٹی مینو => اسکرپٹ => 4 "اسکرپٹ فائل کا نام"
سیکیور سی آر ٹی مینو => اسکرپٹ => 5 "اسکرپٹ فائل کا نام"

کنکشن کے بعد خودکار آغاز (لاگ آن اسکرپٹ)

خودکار لاگنگ اسکرپٹ کی ترتیبات محفوظ شدہ سیشن کے لیے ترتیب دی گئی ہیں: کنکشن => لاگ ان ایکشنز => لاگ ان اسکرپٹ

سکرپٹ کا استعمال کرتے ہوئے SecureCRT میں خودکار اندراج

اسکرپٹ کا استعمال کیے بغیر خودکار لاگ ان

اسکرپٹ لکھے بغیر خود بخود پاس ورڈ کا صارف نام درج کرنا ممکن ہے، صرف SecureCRT کی بلٹ ان فعالیت کا استعمال کرتے ہوئے۔ کنکشن کی ترتیبات میں "کنکشن" => لاگ ان ایکشنز => خودکار لاگ ان - آپ کو کئی بنڈل بھرنے کی ضرورت ہے - جس کا مطلب ہے جوڑے: "متوقع متن" + "اس متن میں حروف بھیجے گئے" ایسے بہت سے جوڑے ہوسکتے ہیں۔ (مثال: پہلا جوڑا صارف نام کا انتظار کر رہا ہے، دوسرا پاس ورڈ کا انتظار کر رہا ہے، تیسرا مراعات یافتہ موڈ پرامپٹ کا انتظار کر رہا ہے، چوتھا جوڑا مراعات یافتہ موڈ پاس ورڈ کے لیے۔)

سسکو ASA پر خودکار لاگ ان کی مثال:

سکرپٹ کا استعمال کرتے ہوئے SecureCRT میں خودکار اندراج

SecureCRT میں بٹن کے ساتھ دستی طور پر ٹرگر کرنا (ایک بٹن بنانا اور SecureCRT میں شامل کرنا باقی ہے)

SecureCRT میں، آپ بٹن کو اسکرپٹ تفویض کر سکتے ہیں۔ بٹن کو اس مقصد کے لیے خاص طور پر بنائے گئے پینل میں شامل کیا جاتا ہے۔

اے۔ انٹرفیس میں پینل شامل کرنا: سیکیور سی آر ٹی مینو => ویو => بٹن بار
ب پینل میں ایک بٹن شامل کریں اور اسکرپٹ شامل کریں۔ - بٹن بار پر دائیں کلک کریں اور سیاق و سباق کے مینو سے "نیا بٹن…" منتخب کریں۔
وی "میپ بٹن" ڈائیلاگ باکس میں، "ایکشن" فیلڈ میں، "رن اسکرپٹ" ایکشن (فنکشن) کو منتخب کریں۔
بٹن کے لیے کیپشن کی وضاحت کریں۔ بٹن آئیکن کا رنگ۔ ٹھیک ہے پر کلک کرکے ترتیبات کو ختم کریں۔

سکرپٹ کا استعمال کرتے ہوئے SecureCRT میں خودکار اندراج

نوٹ:

بٹنوں کے ساتھ پینل بہت مفید فعالیت ہے۔

1. یہ ممکن ہے، جب کسی مخصوص سیشن میں لاگ ان کریں، تو یہ بتانے کے لیے کہ اس ٹیب پر کون سا پینل بطور ڈیفالٹ کھولنا ہے۔

2. یہ ممکن ہے کہ آلات کے ساتھ معیاری کارروائیوں کے لیے پہلے سے طے شدہ کارروائیاں ترتیب دیں: شو ورژن دکھائیں، رننگ کنفیگریشن دکھائیں، کنفیگریشن کو محفوظ کریں۔

سکرپٹ کا استعمال کرتے ہوئے SecureCRT میں خودکار اندراج
ان بٹنوں کے ساتھ کوئی اسکرپٹ منسلک نہیں ہے۔ صرف ایکشن لائن:

سکرپٹ کا استعمال کرتے ہوئے SecureCRT میں خودکار اندراج
ترتیب - تاکہ سیشن میں سوئچ کرتے وقت، بٹنوں کے ساتھ ضروری پینل سیشن کی ترتیبات میں کھلتا ہے:

سکرپٹ کا استعمال کرتے ہوئے SecureCRT میں خودکار اندراج
گاہک کے لیے لاگ ان کے لیے انفرادی اسکرپٹس ترتیب دینا اور وینڈر کے لیے متواتر احکامات کے ساتھ پینل پر جانا سمجھ میں آتا ہے۔

سکرپٹ کا استعمال کرتے ہوئے SecureCRT میں خودکار اندراج
جب آپ Go Cisco بٹن دباتے ہیں، تو پینل سسکو بٹن بار میں بدل جاتا ہے۔

سکرپٹ کا استعمال کرتے ہوئے SecureCRT میں خودکار اندراج

سادہ اور جدید اسکرپٹ استعمال کرنے کی مثالیں۔ (حقیقی زندگی سے مشق کریں۔)

سادہ سکرپٹ تقریباً تمام مواقع کے لیے کافی ہیں۔ لیکن ایک بار جب مجھے اسکرپٹ کو تھوڑا سا پیچیدہ کرنے کی ضرورت پڑی - کام کو تیز کرنے کے لیے۔ اس پیچیدگی نے صارف سے ڈائیلاگ باکس میں صرف اضافی ڈیٹا کی درخواست کی۔

ڈائیلاگ باکس کا استعمال کرتے ہوئے صارف سے ڈیٹا کی درخواست کرنا

میرے پاس ڈیٹا ریکوئسٹ اسکرپٹ میں 2 تھا۔ یہ ہوسٹ نیم ہے اور IP ایڈریس کا چوتھا آکٹیٹ ہے۔ اس عمل کو انجام دینے کے لیے - میں نے اسے کیسے کرنا ہے گوگل کیا اور اسے SecureCRT (vandyke) کی آفیشل ویب سائٹ پر پایا۔ - فعالیت کو پرامپٹ کہا جاتا ہے۔

	crt.Screen.WaitForString("-Vlanif200]")
	hostnamestr = crt.Dialog.Prompt("Enter hostname:", "hostname", "", False)
	ipaddressstr = crt.Dialog.Prompt("Enter ip address:", "ip", "", False)
	crt.Screen.Send("ip address 10.10.10.")
	crt.Screen.Send(ipaddressstr)
	crt.Screen.Send(" 23r")
	crt.Screen.Send("quitr")
	crt.Screen.Send("sysname ")
	crt.Screen.Send(hostnamestr)
	crt.Screen.Send("r") 

اسکرپٹ کے اس حصے نے آخری آکٹیٹ سے میزبان نام اور نمبرز مانگے۔ چونکہ سامان کے 15 ٹکڑے تھے۔ اور ڈیٹا کو ایک ٹیبل میں پیش کیا گیا، پھر میں نے ٹیبل سے ویلیوز کو کاپی کرکے ڈائیلاگ بکس میں چسپاں کیا۔ مزید اسکرپٹ نے آزادانہ طور پر کام کیا۔

نیٹ ورک کے سامان میں FTP کاپی کرنا۔

اس اسکرپٹ نے میری کمانڈ ونڈو (شیل) کو لانچ کیا اور FTP کے ذریعے ڈیٹا کاپی کیا۔ آخر میں، سیشن بند کریں. اس کے لیے نوٹ پیڈ کا استعمال ناممکن ہے، کیونکہ کاپی کرنے میں کافی وقت لگتا ہے اور FTP بفر میں ڈیٹا کو زیادہ دیر تک محفوظ نہیں کیا جائے گا:

# $language = "Python"
# $interface = "1.0"

# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.

def main():
	crt.Screen.Synchronous = True
	crt.Screen.Send("ftp 192.168.1.1r")
	crt.Screen.WaitForString("Name")
	crt.Screen.Send("adminr")
	crt.Screen.WaitForString("Password:")
	crt.Screen.Send("Passwordr")
	crt.Screen.WaitForString("ftp")
	crt.Screen.Send("binaryr")
	crt.Screen.WaitForString("ftp")
	crt.Screen.Send("put S5720LI-V200R011SPH016.patr")
	crt.Screen.WaitForString("ftp")
	crt.Screen.Send("quitr")
	crt.Screen.Synchronous = False
main()

اسکرپٹ کا استعمال کرتے ہوئے صارف نام/پاس ورڈ درج کرنا

ایک صارف پر نیٹ ورک کے سامان تک براہ راست رسائی بند کر دی گئی تھی۔ پہلے ڈیفالٹ گیٹ وے سے منسلک ہو کر آلات میں داخل ہونا ممکن تھا، اور پھر اس سے منسلک آلات تک۔ آئی او ایس/ہارڈویئر سافٹ ویئر میں شامل ssh کلائنٹ کو کنیکٹ کرنے کے لیے استعمال کیا گیا تھا۔ اس کے مطابق کنسول میں صارف نام اور پاس ورڈ کی درخواست کی گئی۔ نیچے دیے گئے اسکرپٹ کے ساتھ، صارف نام اور پاس ورڈ خود بخود درج ہو گئے تھے۔

# $language = "Python"
# $interface = "1.0"

# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.

def main():
	crt.Screen.Synchronous = True
	crt.Screen.Send("snmpadminr")
	crt.Screen.WaitForString("assword:")
	crt.Screen.Send("Passwordr")
	crt.Screen.Synchronous = False
main()

نوٹ: 2 اسکرپٹ تھے۔ ایک ایڈمنسٹریٹر اکاؤنٹ کے لیے، دوسرا eSIGHT اکاؤنٹ کے لیے۔

اسکرپٹ پر عمل درآمد کے دوران ڈیٹا کو براہ راست شامل کرنے کی صلاحیت کے ساتھ اسکرپٹ۔

کام تمام نیٹ ورک آلات پر ایک جامد راستہ شامل کرنا تھا۔ لیکن ہر آلات پر انٹرنیٹ کا گیٹ وے مختلف تھا (اور یہ پہلے سے طے شدہ گیٹ وے سے مختلف تھا)۔ مندرجہ ذیل اسکرپٹ نے روٹنگ ٹیبل کو ظاہر کیا، کنفیگریشن موڈ میں داخل ہوا، کمانڈ کو آخر تک نہیں لکھا (انٹرنیٹ کے گیٹ وے کا آئی پی ایڈریس) - میں نے یہ حصہ شامل کیا۔ میں نے Enter دبانے کے بعد، اسکرپٹ کمانڈ پر عمل درآمد کرتا رہا۔

# $language = "Python"
# $interface = "1.0"

# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.

def main():
	crt.Screen.Synchronous = True
	crt.Screen.Send("Zdes-mogla-bit-vasha-reklamar")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("show run | inc ip router")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("conf tr")
	crt.Screen.WaitForString("(config)#")
	crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ")
	crt.Screen.WaitForString("(config)#")
	crt.Screen.Send("endr")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("copy run star")
	crt.Screen.WaitForString("[startup-config]?")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("exitr")
	crt.Screen.Synchronous = False
main()

اس اسکرپٹ میں، لائن میں: crt.Screen.Send("ip route 10.10.10.8 255.255.255.252") گیٹ وے کا IP ایڈریس شامل نہیں کیا گیا ہے اور کیریج ریٹرن کریکٹر نہیں ہے۔ اسکرپٹ حروف کے ساتھ اگلی لائن کا انتظار کر رہا ہے "(config) #" یہ حروف میرے آئی پی ایڈریس درج کرنے اور داخل کرنے کے بعد ظاہر ہوئے۔

نتیجہ:

اسکرپٹ لکھتے وقت اور اس پر عمل کرتے وقت، اس قاعدے پر عمل کرنا ضروری ہے: اسکرپٹ لکھنے اور اسکرپٹ پر عمل کرنے کا وقت نظریاتی طور پر ایک ہی کام کو دستی طور پر کرنے میں صرف ہونے والے وقت سے زیادہ نہیں ہونا چاہئے (نوٹ پیڈ سے کاپی / پیسٹ، لکھنا اور ڈیبگ کرنا) قابل جواب، تحریری اور ڈیبگنگ ازگر اسکرپٹ کے لیے ایک پلے بک)۔ یعنی، اسکرپٹ کے استعمال سے وقت کی بچت ہونی چاہیے، اور عمل کے یک وقتی آٹومیشن پر وقت ضائع نہیں کرنا چاہیے (یعنی جب اسکرپٹ منفرد ہو اور اس میں مزید تکرار نہ ہو)۔ لیکن اگر اسکرپٹ منفرد ہے اور اسکرپٹ کے ساتھ آٹومیشن ہے اور اسکرپٹ کو لکھنے/ڈیبگ کرنے میں اسے کسی اور طریقے سے کرنے کے مقابلے میں کم وقت لگتا ہے (قابل قبول، کمانڈ ونڈو)، تو اسکرپٹ بہترین حل ہے۔
اسکرپٹ کو ڈیبگ کرنا۔ اسکرپٹ آہستہ آہستہ بڑھتا ہے، پہلی، دوسری، تیسری ڈیوائس پر رن ​​ان پر ڈیبگنگ ہوتی ہے، اور چوتھے تک اسکرپٹ مکمل طور پر کام کرنے کا امکان ہے۔

ماؤس کے ساتھ اسکرپٹ (یوزر نیم + پاس ورڈ درج کرکے) چلانا عام طور پر نوٹ پیڈ سے صارف نام اور پاس ورڈ کاپی کرنے سے زیادہ تیز ہوتا ہے۔ لیکن حفاظتی نقطہ نظر سے محفوظ نہیں۔
اسکرپٹ استعمال کرتے وقت ایک اور (حقیقی) مثال: آپ کو نیٹ ورک کے آلات تک براہ راست رسائی نہیں ہے۔ لیکن نیٹ ورک کے تمام آلات کو ترتیب دینے کی ضرورت ہے (اسے مانیٹرنگ سسٹم میں لائیں، ایک اضافی Username/password/snmpv3username/password ترتیب دیں)۔ جب آپ کور سوئچ پر جاتے ہیں تو وہاں رسائی ہوتی ہے، اس سے آپ SSH کو دوسرے آلات پر کھولتے ہیں۔ آپ جوابی استعمال کیوں نہیں کر سکتے؟ - کیونکہ ہم نیٹ ورک آلات پر بیک وقت اجازت دیے جانے والے سیشنز کی ایک حد تک پہنچ جاتے ہیں (لائن vty 0 4، user-interface vty 0 4) (ایک اور سوال یہ ہے کہ ایک ہی SSH فرسٹ ہاپ کے ساتھ Ansible میں مختلف آلات کیسے شروع کیے جائیں)۔

اسکرپٹ طویل آپریشنز کے دوران وقت کو کم کرتی ہے - مثال کے طور پر، FTP کے ذریعے فائلوں کو کاپی کرنا۔ کاپی مکمل ہونے کے بعد، اسکرپٹ فوری طور پر کام کرنا شروع کر دیتا ہے۔ ایک شخص کو کاپی کرنے کا انجام دیکھنے کی ضرورت ہوگی، پھر کاپی کرنے کے اختتام کا احساس ہو گا، پھر مناسب احکامات درج کریں۔ اسکرپٹ اسے معروضی طور پر تیزی سے کرتا ہے۔

اسکرپٹ کا اطلاق ہوتا ہے جہاں بڑے پیمانے پر ڈیٹا ڈیلیوری ٹولز کا استعمال کرنا ناممکن ہوتا ہے: کنسول۔ یا جب آلات کے لیے کچھ ڈیٹا منفرد ہو: میزبان نام، انتظامی آئی پی ایڈریس۔ یا کسی پروگرام کو لکھتے وقت اور ڈیبگ کرتے وقت اسکرپٹ کے چلنے کے دوران آلات سے حاصل کردہ ڈیٹا کو شامل کرنے سے زیادہ مشکل ہوتا ہے۔ - روٹ تجویز کرنے کے لیے اسکرپٹ کے ساتھ ایک مثال، جب ہر آلات کا انٹرنیٹ فراہم کنندہ کا اپنا IP پتہ ہوتا ہے۔ (میرے ساتھیوں نے اس طرح کے اسکرپٹ لکھے - جب DMVPN بولا 3 سے زیادہ تھا۔ DMVPN کی ترتیبات کو تبدیل کرنا ضروری تھا)۔

کیس اسٹڈی: کنسول پورٹس کا استعمال کرتے ہوئے ایک نئے سوئچ پر ابتدائی ترتیبات کو ترتیب دینا:

A. کنسول کیبل کو ڈیوائس میں لگائیں۔
B. اسکرپٹ چلائیں۔
B. اسکرپٹ پر عمل درآمد کا انتظار کیا۔
D. کنسول کیبل کو اگلی ڈیوائس میں لگائیں۔
E. اگر سوئچ آخری نہیں ہے، تو مرحلہ B پر جائیں۔

اسکرپٹ کے کام کے نتیجے میں:

  • ابتدائی پاس ورڈ آلات پر سیٹ کیا جاتا ہے۔
  • صارف نام درج کر دیا گیا۔
  • ڈیوائس کا منفرد IP ایڈریس درج کیا گیا ہے۔

PS آپریشن کو دہرانا پڑا۔ کیونکہ ڈیفالٹ ssh کو کنفیگر/غیر فعال نہیں کیا گیا تھا۔ (ہاں، یہ میری غلطی ہے۔)

استعمال شدہ ذرائع۔

1. اسکرپٹ بنانے کے بارے میں
2. اسکرپٹ کی مثالیں۔

ضمیمہ 1: نمونہ سکرپٹ۔


ایک طویل اسکرپٹ کی ایک مثال، دو سوالات کے ساتھ: میزبان نام اور IP پتہ۔ یہ کنسول (9600 بوڈ) کے ذریعے سازوسامان کو پہلے سے ترتیب دینے کے لیے بنایا گیا تھا۔ اور نیٹ ورک سے سامان کا کنکشن بھی تیار کرنا۔

# $language = "Python"
# $interface = "1.0"

# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.

def main():
	crt.Screen.Synchronous = True
	crt.Screen.Send("r")
	crt.Screen.WaitForString("name")
	crt.Screen.Send("adminr")
	crt.Screen.WaitForString("Password:")
	crt.Screen.Send("Passwordr")
	crt.Screen.Send("sysr")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("interface Vlanif 1r")
	crt.Screen.WaitForString("Vlanif1]")
	crt.Screen.Send("undo ip addressr")
	crt.Screen.Send("shutdownr")
	crt.Screen.Send("vlan 100r")
	crt.Screen.Send(" description description1r")
	crt.Screen.Send(" name description1r")
	crt.Screen.Send("vlan 110r")
	crt.Screen.Send(" description description2r")
	crt.Screen.Send(" name description2r")
	crt.Screen.Send("vlan 120r")
	crt.Screen.Send(" description description3r")
	crt.Screen.Send(" name description3r")
	crt.Screen.Send("vlan 130r")
	crt.Screen.Send(" description description4r")
	crt.Screen.Send(" name description4r")
	crt.Screen.Send("vlan 140r")
	crt.Screen.Send(" description description5r")
	crt.Screen.Send(" name description5r")
	crt.Screen.Send("vlan 150r")
	crt.Screen.Send(" description description6r")
	crt.Screen.Send(" name description6r")
	crt.Screen.Send("vlan 160r")
	crt.Screen.Send(" description description7r")
	crt.Screen.Send(" name description7r")
	crt.Screen.Send("vlan 170r")
	crt.Screen.Send(" description description8r")
	crt.Screen.Send(" name description8r")               
	crt.Screen.Send("vlan 180r")
	crt.Screen.Send(" description description9r")
	crt.Screen.Send(" name description9r")
	crt.Screen.Send("vlan 200r")
	crt.Screen.Send(" description description10r")
	crt.Screen.Send(" name description10r")
	crt.Screen.Send("vlan 300r")
	crt.Screen.Send(" description description11r")
	crt.Screen.Send(" name description11r")
	crt.Screen.Send("quitr")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("stp region-configurationr")
	crt.Screen.Send("region-name descr")
	crt.Screen.Send("active region-configurationr")
	crt.Screen.WaitForString("mst-region]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("stp instance 0 priority 57344r")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("interface range GigabitEthernet 0/0/1 to GigabitEthernet 0/0/42r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description Usersr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type hybridr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("voice-vlan 100 enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("voice-vlan legacy enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid pvid vlan 120r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid tagged vlan 100r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid untagged vlan 120r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("stp edged-port enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("trust 8021pr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action blockr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trapr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("interface range GigabitEthernet 0/0/43 to GigabitEthernet 0/0/48r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description Printersr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type accessr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port default vlan 130r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("stp edged-port enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("trust 8021pr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action blockr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trapr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("interface range XGigabitEthernet 0/0/1 to XGigabitEthernet 0/0/2r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description uplinkr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type trunkr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port trunk allow-pass vlan 100 110 120 130 140 150 160 170 180 200r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port trunk allow-pass vlan 300r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action blockr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trapr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.4r")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.2r")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.134r")
	crt.Screen.Send("ip route-static 0.0.0.0 0.0.0.0 10.10.10.254r")
	crt.Screen.Send("interface Vlanif 200r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
        hostnamestr = crt.Dialog.Prompt("Enter hostname:", "hostname", "", False)
        ipaddressstr = crt.Dialog.Prompt("Enter ip address:", "ip", "", False)
	crt.Screen.Send("ip address 10.10.10.")
	crt.Screen.Send(ipaddressstr)
	crt.Screen.Send(" 24r")
	crt.Screen.Send("quitr")
	crt.Screen.Send("sysname ")
	crt.Screen.Send(hostnamestr)
	crt.Screen.Send("r")
	crt.Screen.WaitForString("]")
	crt.Screen.Synchronous = False
main()

اس طرح کے سکرپٹ کی عام طور پر ضرورت نہیں ہے، لیکن سامان کی مقدار 15 پی سیز ہے. تیز تر سیٹ اپ کی اجازت ہے۔ SecureCRT کمانڈ ونڈو کا استعمال کرتے ہوئے آلات کو ترتیب دینا تیز تر تھا۔

ssh کے لیے ایک اکاؤنٹ ترتیب دینا۔

ایک اور مثال. کنفیگریشن کنسول کے ذریعے بھی ہے۔

# $language = "Python"
# $interface = "1.0"

# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.

def main():
	crt.Screen.Synchronous = True
	crt.Screen.Send("r")
	crt.Screen.WaitForString("name")
	crt.Screen.Send("adminr")
	crt.Screen.WaitForString("Password:")
	crt.Screen.Send("Passwordr")
	crt.Screen.WaitForString(">")
	crt.Screen.Send("sysr")
	crt.Screen.Send("stelnet server enabler")
	crt.Screen.Send("aaar")
	crt.Screen.Send("local-user admin service-type terminal ftp http sshr")
	crt.Screen.Send("quitr")
	crt.Screen.Send("user-interface vty 0 4r")
	crt.Screen.Send("authentication-mode aaar")
	crt.Screen.Send("quitr")
	crt.Screen.Send("quitr")
	crt.Screen.Synchronous = False
main()


SecureCRT کے بارے میں:ادا شدہ سافٹ ویئر: $99 سے (سب سے چھوٹی قیمت صرف ایک سال کے لیے SecureCRT کے لیے ہے)
سرکاری ویب سائٹ
ایک سافٹ ویئر لائسنس ایک بار خریدا جاتا ہے، سپورٹ کے ساتھ (اپ ڈیٹ کرنے کے لیے)، پھر سافٹ ویئر کو اس لائسنس کے ساتھ لامحدود وقت کے لیے استعمال کیا جاتا ہے۔

Mac OS X اور Windows آپریٹنگ سسٹم پر کام کرتا ہے۔

اسکرپٹ سپورٹ ہے (یہ مضمون)
ہے کمانڈ ونڈو
سیریل/ٹیل نیٹ/SSH1/SSH2/شیل آپریٹنگ سسٹم

ماخذ: www.habr.com