هنوز در مورد مشکل خون ریزی قلبی، مطالب فنی زیادی نخوندم، اما این عکس رو امروز پیدا کردم. به ساده ترین شکل ممکن یه مساله رو توضیح داده
هنوز در مورد مشکل خون ریزی قلبی، مطالب فنی زیادی نخوندم، اما این عکس رو امروز پیدا کردم. به ساده ترین شکل ممکن یه مساله رو توضیح داده
امروز که رفته بودم سایت مربوط به کتاب سیلبرشاتس، یه مطلب توجهم رو جلب کرد. یک فایل کوچیک گذاشته بود که حاوی عناوین بهترین مقالات مرتبط با سیستم عامل بود، چند تا از این مقالات رو قبلا خوندم و واقعا شاهکاری هستند برای خودشون.
لیست مقالات رو میتونین از اینجا ببینید.
import zmq import time import sys port = "5556" if len(sys.argv) > 1: port = sys.argv[1] int(port) context = zmq.Context() socket = context.socket(zmq.REP) socket.bind("tcp://*:%s" % port) while True: # Wait for next request from client message = socket.recv() print "Received request: ", message time.sleep (1) socket.send("World from %s" % port)
import zmq from zmq import ssh import sys import paramiko port = "5557" if len(sys.argv) > 1: port = sys.argv[1] int(port) if len(sys.argv) > 2: port1 = sys.argv[2] int(port1) context = zmq.Context() print "Connecting to server..." socket = context.socket(zmq.REQ) socket.connect ("tcp://192.168.10.245:%s" % port) # Do 10 requests, waiting each time for a response for request in range (1,10): print "Sending request ", request,"..." socket.send ("Hello") # Get the reply. message = socket.recv() print "Received reply ", request, "[", message, "]"این سیستم میتواند به سادگی توسط zmq پیاده سازی شود.
ssh -L 127.0.0.1:5557:localhost:5556 user@192.168.10.245 -N
بعد از وارد کردن دستور بالا در ترمینال کلمه عبور سیستم A پرسیده میشود. بعد از وارد کردن آن میتون ارتباط امن بین پردازش ها را داشته باشیم. کد برنامه ها به صورت زیر تغییر پیدا میکند:
سیستم A که نقش سرور را دارد:
import zmq import time import sys port = "5556" if len(sys.argv) > 1: port = sys.argv[1] int(port) context = zmq.Context() socket = context.socket(zmq.REP) socket.bind("tcp://127.0.0.1:%s" % port) while True: # Wait for next request from client message = socket.recv() print "Received request: ", message time.sleep (1) socket.send("World from %s" % port)
کد سیستم B که نقش سرویس گیرنده دارد:
import zmq from zmq import ssh import sys import paramiko port = "5557" if len(sys.argv) > 1: port = sys.argv[1] int(port) if len(sys.argv) > 2: port1 = sys.argv[2] int(port1) context = zmq.Context() print "Connecting to server..." socket = context.socket(zmq.REQ) socket.connect ("tcp://127.0.0.1:%s" % port) # Do 10 requests, waiting each time for a response for request in range (1,10): print "Sending request ", request,"..." socket.send ("Hello") # Get the reply. message = socket.recv() print "Received reply ", request, "[", message, "]"
در کتابخانه pyzmq که یک پیاده سازی برای zmq است، یک گسترش بر روی اتصال zmq وجود دارد که همین کار اتصال تونل را انجام میدهد. کد نهایی به صورت زیر خواهد بود:
کد سیستم A تغییر نخواهد کرد و همان کد قسمت قبلی است
کد سیستم B به صورت زیر خواهد بود:
import zmq from zmq import ssh import sys import paramiko port = "5557" if len(sys.argv) > 1: port = sys.argv[1] int(port) if len(sys.argv) > 2: port1 = sys.argv[2] int(port1) context = zmq.Context() print "Connecting to server..." socket = context.socket(zmq.REQ) ssh.tunnel_connection(socket,"tcp://127.0.0.1:5556","user@192.168.10.245",password="111111") if len(sys.argv) > 2: socket.connect ("tcp://192.168.10.245:%s" % port1) # Do 10 requests, waiting each time for a response for request in range (1,10): print "Sending request ", request,"..." socket.send ("Hello") # Get the reply. message = socket.recv() print "Received reply ", request, "[", message, "]"
فرض کنید که میخواهید بسته های خاصی را با iptables فیلتر کنید، در iptables دستورات زیر را خواهید نوشت.
iptables -A FORWARD -p tcp --dport 22 -j LOG iptables -A FORWARD -p tcp --dport 22 -j DROP
با سیستم nftables دستور زیر را خواهید نوشت:
nft add rule filter forward tcp dport 22 log drop
فرض کنید که میخواهید بسته های چندین بسته را برای چندین پورت را فیلتر کنید و همچنین به نوع های خاص پروتکل icmpv6 اجازه عبود دهید. در iptables دستورات زیر را خواهید نوشت:
ip6tables -A INPUT -p tcp -m multiport --dports 23,80,443 -j ACCEPT ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbor-solicitation -j ACCEPT ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT ip6tables -A INPUT -p icmpv6 --icmpv6-type router-advertisement -j ACCEPT ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbor-advertisement -j ACCEPT
اما در nftables دستور زیر ر خواهید نوشت:
nft add rule ip6 filter input tcp dport {telnet, http, https} accept nft add rule ip6 filter input icmpv6 type { nd-neighbor-solicit, echo-request, nd-router-advert, nd-neighbor-advert } accept
mapping
یک ویژگی پیشرفته در nftables قابلیت مپ کردن است. این امکان وجود دارد که از داده هایی با اعواع مختلف استفاده کنیم و آنها را به هم مپ کنیم. برای مثال میتوان یک iface و مجموعه رول را به هم مرتبط کنیم. در مثال زیر زنجیره دستورات به نام low_sec و high_sec ساخته شده است.
# nft -i nft> add map filter jump_map { type ifindex => verdict; } nft> add element filter jump_map { eth0 => jump low_sec; } nft> add element filter jump_map { eth1 => jump high_sec; } nft> add rule filter input meta iif vmap @jump_map
در صورت نیاز به افزودن یک رابط شبکه، مثلا ppp1 دستور زیر را خواهیم نوشت:
nft> add element filter jump_map { ppp1 => jump low_sec; }
سرعت بروز رسانی و هسته
سیستم iptables با افزودن دستورات زیاد تر به حد زیادی دچار افت سرعت میشود. اما در سیستم جدیدتر nftables این کاهش سرعت وجود نخواهد داشت.
در سیستم iptables برای هر افزودن target یا match نیازمند ماژول و کامپایل دوباره کرنل هستیم. در سیستم nftables بیشتر وظایف در لایه کاربری انجام میشود که این مساله باعث کاهش نیاز به تغییرات هسته میشود. برای مثال ویژگی پشتیبانی از icmp6 با یک پچ قابل انجام است.
در مطلب بعدی به تغییرات معماری سیستم خواهیم پرداخت.
با سلام
در این پست، اسلاید های آموزشی که در کلاس تدریس میشه یا مطلب خوبی داشته باشه قرار داده میشه
http://bayanbox.ir/id/1940651557686741671
روشهای زیادی برای فعال کردن قابلیت ورود خودکار (auto login) به محیط کاربری گرافیکی سیستم عامل لینوکس موجود است. اما این روشها وابسته به محیط گرافیکی است. برای مثال در محیط اوبونتو برای انجام این کار در محیط گرافیکی یک امکان خاص وجود دارد.
برای انجام این کار در محیط متنی میتوان از روش زیر استفاده کرد:
در محیط گرافیکی لینوکس، چندین tty که شبیه ساز ترمینال است موجود میباشد. برای اینکه کاربری به محیط خاصی لاگین کند، باید tty مشخصی را عوض کنیم. در محیط متنی معمولا با tty1 به صورت پیشفرض لاگین انجام میشود. در مثال زیر برای کاربر test، در tty1 به صورت پیشفرض لاگین انجام میشود.
در فایل
/etc/init/tty1.conf
خط:
exec /sbin/qetty -8 38400 tty1
را با خط زیر جایگزین کنید:
exec /bin/login -f test < /dev/tty1 > /dev/tty1 2>&1
سیستم OpenStack یک مجموعه از نرم افزارهای ابری است که توانایی اجرا بر روی سیستم های عادی را دارد. این سیستم برای اجرا به سخت افزار خاص یا پیش نیاز نرم افزاری خاصی نیاز ندارد و میتواند با محصولات دیگر هماهنگ شده و کارایی مناسبی دارد. به عنوان دیگر میتوان گفت این محصول میتواند به عنوان زیرساخت یک سازمان استفاده شود.
این سیستم در ابتدا توسط سازمان NASA و RackSpace توسعه پیدا کرد و اولین انتشار آن در سال 2010 بوده است. این محصول از ابتدا برای استفاده عمومی بوده و به صورت متن باز عرضه شده است.
کلود چیست؟
در ابتدا در مورد چیستی کلود و محاسبات ابری مطالبی عنوان میکنم. محاسبات ابری بر پایه تکنولوژی های موجود مانند مجازی سازی و کلاستربندی برای مجازی سازی سخت افزار، نرم افزار، ذخیره سازی، و منابع شبکه ای به صورت واحد های قابل انعطاف است که میتواند برای رسیدن به هدف خاصی تخصیص پیدا کند. بنابراین در عوض ساختار ایستای قدیمی که سخت افزار فیزیکی برای کارهای مختلفی در نظر گرفته میشد و ساختار ایستای شبکه و ذخیره سازی موجود قبلی در این روش به صورت یک مجموعه منایع شکل میگیرند. در این روش استفاده از سخت افزار بسیار آسان تر خواهد بود همچنین افزایش و کاهش میزان قدرت مورد نیاز نیز به سادگی انجام میشود.
سرویس های ابری میتواند به صورت خصوصی و به صورت عمومی مانند amazon ec2 باشد. میتوان سرویسهای ابری خصوصی و عمومی را با یکدیگر ترکیب کرد. برای مثال میتوان داده های مهم را در محیط ابری خصوصی نگه داری کرد. تمامی منابع امکان اشتراکی سازی بر روی فضای ابری را دارا میباشند. مدلهای اصلی سرویس ارائه شده به صورت زیر است:
مجازی سازی توابع شبکه
با توجه به توسعه تکنولوژی مرتبط با شبکه در حیطه سخت افزار کامپیوترهای شخصی، هر سرویسی که در حال حاضر توسط سخت افزارها و کاربردهای خاص در شبکه ارائه میشود، قابلیت انجام بر روی ماشین مجازی را نیز دارا میباشد. این پیشرفت مبنای اصلی مجازی سازی در کاربردهای شبکه ای است. برای مثال: مسیریابها، دیواره های آتش، توزیع کننده های بار و دیگر ابزارها که میتوانند به صورت ماشین مجازی بر روی سخت افزارهای معمولی ارائه شوند.